java发邮件Java怎么直接发送邮件,而不通过页面或者outlook软件.

java发邮件  时间:2021-09-04  阅读:()

怎样用java实现邮件的发送?

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import .Socket; import .SocketException; import java.rmi.UnknownHostException; import java.util.StringTokenizer; import sun.misc.BASE64Encoder; public class Sender { //private boolean debug = true; BASE64Encoder encode=new BASE64Encoder();//用于加密后发送用户名和密码 static int dk=25; private Socket socket; public Sender(String server, int port) throws UnknownHostException, IOException { try { socket = new Socket(server, dk); } catch (SocketException e) { System.out.println(e.getMessage()); } catch (Exception e) { e.printStackTrace(); } finally { //System.out.println("已经建立连接!"); } } // 注册到邮件服务器 public void helo(String server, BufferedReader in, BufferedWriter out) throws IOException { int result; result = getResult(in); // 连接上邮件服务后,服务器给出220应答 if (result != 220) { throw new IOException("连接服务器失败"); } result = sendServer("HELO " + server, in, out); // HELO命令成功后返回250 if (result != 250) { throw new IOException("注册邮件服务器失败!"); } } private int sendServer(String str, BufferedReader in, BufferedWriter out) throws IOException { out.write(str); out.newLine(); out.flush(); /* if (debug) { System.out.println("已发送命令:" + str); } */ return getResult(in); } public int getResult(BufferedReader in) { String line = ""; try { line = in.readLine(); /* if (debug) { System.out.println("服务器返回状态:" + line); } */ } catch (Exception e) { e.printStackTrace(); } // 从服务器返回消息中读出状态码,将其转换成整数返回 StringTokenizer st = new StringTokenizer(line, " "); return Integer.parseInt(st.nextToken()); } public void authLogin(MailMessage message, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer("AUTH LOGIN", in, out); if (result != 334) { throw new IOException("用户验证失败!"); } result=sendServer(encode.encode(message.getUser().getBytes()),in,out); //System.out.println("用户名: "+encode.encode(message.getUser().getBytes())); if (result != 334) { throw new IOException("用户名错误!"); } result=sendServer(encode.encode(message.getPassword().getBytes()),in,out); //result=sendServer(message.getPassword(),in,out); //System.out.println("密码: "+encode.encode(message.getPassword().getBytes())); if (result != 235) { throw new IOException("验证失败!"); } } // 开始发送消息,邮件源地址 public void mailfrom(String source, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer("MAIL FROM:<" + source + ">", in, out); if (result != 250) { throw new IOException("指定源地址错误"); } } // 设置邮件收件人 public void rcpt(String touchman, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer("RCPT TO:<" + touchman + ">", in, out); if (result != 250) { throw new IOException("指定目的地址错误!"); } } // 邮件体 public void data(String from, String to, String subject, String content, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer("DATA", in, out); // 输入DATA回车后,若收到354应答后,继续输入邮件内容 if (result != 354) { throw new IOException("不能发送数据"); } out.write("From: " + from); out.newLine(); out.write("To: " + to); out.newLine(); out.write("Subject: " + subject); out.newLine(); out.newLine(); out.write(content); out.newLine(); // 句号加回车结束邮件内容输入 result = sendServer(".", in, out); //System.out.println(result); if (result != 250) { throw new IOException("发送数据错误"); } } // 退出 public void quit(BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer("QUIT", in, out); if (result != 221) { throw new IOException("未能正确退出"); } } // 发送邮件主程序 public boolean sendMail(MailMessage message, String server) { try { BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); helo(server, in, out);// HELO命令 authLogin(message, in, out);// AUTH LOGIN命令 mailfrom(message.getFrom(), in, out);// MAIL FROM rcpt(message.getTo(), in, out);// RCPT data(message.getDatafrom(), message.getDatato(), message.getSubject(), message.getContent(), in, out);// DATA quit(in, out);// QUIT } catch (Exception e) { e.printStackTrace(); return false; } return true; } } 再写一个MailMessage.java,set/get方法即可。

怎么用java发送带附件的邮件代码详解

package?email;?? import?java.io.BufferedReader;??? import?java.io.File;?? import?java.io.FileInputStream;?? import?java.io.FileNotFoundException;?? import?java.io.IOException;?? import?java.io.InputStream;?? import?java.io.InputStreamReader;?? import?java.io.PrintWriter;?? import?java.io.UnsupportedEncodingException;?? import?.Socket;?? import?java.nio.charset.Charset;?? import?java.text.SimpleDateFormat;?? import?java.util.ArrayList;?? import?java.util.Date;?? import?java.util.HashMap;?? import?java.util.List;?? import?java.util.Map;?? import?sun.misc.BASE64Encoder;?? public?class?Mail?{?? private?static?final?String?LINE_END?=?" ";?? private?boolean?isDebug?=?true;?? private?boolean?isAllowReadSocketInfo?=?true;?? private?String?host;?? private?String?from;?? private?List?to;?? private?List;?? private?List?;?? private?String?subject;?? private?String?user;?? private?String?password;?? private?String?contentType;?? private?String?boundary;?? private?String?boundaryNextPart;?? private?String?contentTransferEncoding;?? private?String?charset;?? private?String?contentDisposition;?? private?String?content;?? private?String?simpleDatePattern;?? private?String?defaultAttachmentContentType;?? private?List?partSet;?? private?static?Map?contentTypeMap;?? static?{?? //?MIME?Media?Types?? contentTypeMap?=?new?HashMap();?? contentTypeMap.put("xls",?"application/vnd.ms-excel");?? contentTypeMap.put("xlsx",?"application/vnd.ms-excel");?? contentTypeMap.put("xlsm",?"application/vnd.ms-excel");?? contentTypeMap.put("xlsb",?"application/vnd.ms-excel");?? contentTypeMap.put("doc",?"application/msword");?? contentTypeMap.put("dot",?"application/msword");?? contentTypeMap.put("docx",?"application/msword");?? contentTypeMap.put("docm",?"application/msword");?? contentTypeMap.put("dotm",?"application/msword");?? }?? private?class?MailPart?extends?Mail?{?? public?MailPart()?{?? }?? }?? public?Mail()?{?? defaultAttachmentContentType?=?"application/octet-stream";?? simpleDatePattern?=?"yyyy-MM-dd?HH:mm:ss";?? boundary?=?"--=_NextPart_zlz_3907_"?+?System.currentTimeMillis();?? boundaryNextPart?=?"--"?+?boundary;?? contentTransferEncoding?=?"base64";?? contentType?=?"multipart/alternative";?? charset?=?Charset.defaultCharset().name();?? partSet?=?new?ArrayList();?? to?=?new?ArrayList();?? cc?=?new?ArrayList();?? ?=?new?ArrayList();?? }?? private?String?getPartContentType(String?fileName)?{?? String?ret?=?null;?? if?(null?!=?fileName)?{?? int?flag?=?fileName.lastIndexOf(".");?? if?(0?<=?flag?&&?flag?=?0;?i--)?{?? Mail?attachment?=?partSet.get(i);?? String?attachmentContent?=?attachment.getContent();?? if?(null?!=?attachmentContent?&&?0??mailAddressList)?{?? StringBuilder?sbd?=?new?StringBuilder();?? if?(null?!=?mailAddressList)?{?? int?listSize?=?mailAddressList.size();?? for?(int?i?=?0;?i?");?? }?? }?? return?sbd.toString();?? }?? private?List?getrecipient()?{?? List?list?=?new?ArrayList();?? list.addAll(to);?? );?? list.addAll();?? return?list;?? }?? public?void?addAttachment(String?filePath)?{?? addAttachment(filePath,?null);?? }?? public?void?addTo(String?mailAddress)?{?? this.to.add(mailAddress);?? }?? public?void?addCc(String?mailAddress)?{?? .add(mailAddress);?? }?? public?void?(String?mailAddress)?{?? .add(mailAddress);?? }?? public?void?addAttachment(String?filePath,?String?charset)?{?? if?(null?!=?filePath?&&?filePath.length()?>?0)?{?? File?file?=?new?File(filePath);?? try?{?? addAttachment(file.getName(),?new?FileInputStream(file),?? charset);?? }?catch?(FileNotFoundException?e)?{?? System.out.println("错误:"?+?e.getMessage());?? System.exit(1);?? }?? }?? }

如何把java程序运行结果发送到邮箱

可以选择使用log4j,它是一款开源的日志记录工具,提供发送日志邮件功能 Log4j发送日志邮件的作用: 项目错误信息能及时(实时)反映给项目维护人员以及相关负责人。

优点: 1.快速响应; 2.共同监督; 3.邮件正文直接显示了错误信息,拷贝信息比登陆服务器再查找要方便; 4.在日志信息继续写入文件的前提下,多了另外一种获取信息的渠道。

补充:Log4j可以实现输出到控制台,文件,回滚文件,发送日志邮件,数据库,自定义标签。

发送邮件的一个重要的类是SMTPAppender,之前用的是 log4j-1.2.8,在1.2.8的版本中,SMTPAppender没有SMTPPassword 和SMTPUsername 属性。

这两个属性分别是登录SMTP服务器发送认证的用户名和密码。

依赖的jar包: log4j-1.2.15.jar(版本低于log4j-1.2.14.jar不支持SMTP认证) mail.jar activation.jar 在log4j.properties文件中配置: ### send error through email. #log4j的邮件发送appender,如果有必要你可以写自己的appender .SMTPAppender #发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送 log4j.appender.MAIL.Threshold=ERROR #缓存文件大小,日志达到10k时发送Email log4j.appender.MAIL.BufferSize=10 #发送邮件的邮箱帐号 log4j.appender.MAIL.From=xxx@ #SMTP邮件发送服务器地址 log4j.appender.MAIL.SMTPHost= #SMTP发送认证的帐号名 log4j.appender.MAIL.SMTPUsername=xxx@ #SMTP发送认证帐号的密码 log4j.appender.MAIL.SMTPPassword=xxx #是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息 log4j.appender.MAIL.SMTPDebug=false #邮件主题 log4j.appender.MAIL.Subject=Log4JErrorMessage #发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔; #如果需要发副本给某人,则加入下列行 #=xxx@xxx.xxx log4j.appender.MAIL.To=xxx@ .apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[framework]%d - %c -%-4r[%t]%-5p %c %x -%m%n 在java代码中,可是用logger.info("message");方法将message代表的消息发送到指定邮箱中

Java怎么直接发送邮件,而不通过页面或者outlook软件.

1 必须编写邮件客户端程序,请使用javamail包 2 编写一个页面,触发一个事件,讲发送的内容传递给后台的邮件客户端程序,即可完成你的要求 3 你不会是要求我们替你写个程序吧??? 祝你好运!

hostyun评测香港原生IPVPS

hostyun新上了香港cloudie机房的香港原生IP的VPS,写的是默认接入200Mbps带宽(共享),基于KVM虚拟,纯SSD RAID10,三网直连,混合超售的CN2网络,商家对VPS的I/O有大致100MB/S的限制。由于是原生香港IP,所以这个VPS还是有一定的看头的,这里给大家弄个测评,数据仅供参考!9折优惠码:hostyun,循环优惠内存CPUSSD流量带宽价格购买1G1核10G3...

Digital-VM暑期全场六折优惠,8个机房

Digital-VM商家目前也在凑热闹的发布六月份的活动,他们家的机房蛮多的有提供8个数据中心,包括日本、洛杉矶、新加坡等。这次六月份的促销活动全场VPS主机六折优惠。Digital-VM商家还是有一点点特点的,有提供1Gbps和10Gbps带宽的VPS主机,如果有需要大带宽的VPS主机可以看看。第一、商家优惠码优惠码:June40全场主机六折优惠,不过仅可以月付、季付。第二、商家VPS主机套餐1...

pacificrack:VPS降价,SSD价格下降

之前几个月由于CHIA挖矿导致全球固态硬盘的价格疯涨,如今硬盘挖矿基本上已死,硬盘的价格基本上恢复到常规价位,所以,pacificrack决定对全系Cloud server进行价格调整,降幅较大,“如果您是老用户,请通过续费管理或升级套餐,获取同步到最新的定价”。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款VPS特征:基于KVM虚拟,纯SSD raid...

java发邮件为你推荐
软件详细设计说明书软件产品规格说明书都包含什么内容路由器映射我家被人装路由器映射有什么用支付宝账单查询支付宝怎么查询交易记录antiarp电脑一开机就出现发现新硬件xAntiArp Miniport,提示安装,很是影响开机速度,怎么办?4g上网卡什么是4G无线上网卡code查询手机CODE查询soap是什么意思捡肥皂是什么意思啊?无恶意,就好奇乐辞清谈的含义及意义?分销渠道案例王老吉分销渠道案例分析警告本网站内容我的网页一打开,就出安全警告,内容是:当前网页正试图打开您的受信任列表中站点。 该怎么去掉啊????
云南虚拟主机 动态域名解析 免费二级域名 备案域名出售 asp.net主机 php主机 godaddy续费优惠码 seovip 标准机柜尺寸 免空 空间论坛 河南m值兑换 北京双线 Updog ca187 创建邮箱 乐视会员免费领取 脚本大全 标准机柜 此网页包含的内容将不使用安全的https 更多