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 你不会是要求我们替你写个程序吧??? 祝你好运!

柚子互联(34元),湖北十堰高防, 香港 1核1G 5M

柚子互联官网商家介绍柚子互联(www.19vps.cn)本次给大家带来了盛夏促销活动,本次推出的活动是湖北十堰高防产品,这次老板也人狠话不多丢了一个6.5折优惠券而且还是续费同价,稳撸。喜欢的朋友可以看看下面的活动详情介绍,自从站长这么久以来柚子互联从19年开始算是老商家了。六五折优惠码:6kfUGl07活动截止时间:2021年9月30日客服QQ:207781983本次仅推荐部分套餐,更多套餐可进...

HostKvm 黑色星期五香港服务器终身六折 其余机房八折

HostKvm商家我们也不用多介绍,这个服务商来自国内某商家,旗下也有多个品牌的,每次看到推送信息都是几个服务商品牌一起推送的。当然商家还是比较稳定的,商家品牌比较多,这也是国内商家一贯的做法,这样广撒网。这次看到黑五优惠活动发布了,针对其主打的香港云服务器提供终身6折的优惠,其余机房服务器依然是8折,另还有充值50美元赠送5美元的优惠活动,有需要的可以看看。HostKvm是一个创建于2013年的...

趣米云月付460元,香港CN2云服务器VPS月付低至18元

趣米云早期为做技术起家,为3家IDC提供技术服务2年多,目前商家在售的服务有香港vps、香港独立服务器、香港站群服务器等,线路方面都是目前最优质的CN2,直连大陆,延时非常低,适合做站,目前商家正在做七月优惠活动,VPS低至18元,价格算是比较便宜的了。趣米云vps优惠套餐:KVM虚拟架构,香港沙田机房,线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封...

java发邮件为你推荐
阿里校园招聘阿里巴巴校园招聘内推有什么优势按键精灵教程按键精灵看不懂教程谁能简化教教大概主要步骤fast路由器FAST无线路由器要怎么设置路由器映射路由器映射设置购物网站设计如何制作购物网站超市商品价格商品进入大型超市需要哪些费用?安全网络攻防大赛安全知识竞赛安全网络攻防大赛CTF是什么意思安全网络攻防大赛听说黑客大赛结果 360最厉害 18个人没有一个攻破 腾讯30秒被攻破 然后是金山 是不是真fshow瑜伽有什么好处,快三十的人啦,练瑜伽可以吗
紧急升级请记住新域名 国外空间 国外在线代理 网通ip 炎黄盛世 中国电信宽带测速网 昆明蜗牛家 购买国外空间 域名dns 万网空间 美国迈阿密 腾讯网盘 美国代理服务器 alexa世界排名 美国vpn代理 comodo 热云 paypal兑换 一句话木马 vim 更多