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

国内云服务器 1核 2G 2M 15元/月 萤光云

标题【萤光云双十二 全场6折 15元/月 续费同价】今天站长给大家推荐一家国内云厂商的双十二活动。萤光云总部位于福建福州,其成立于2002 年。主打高防云服务器产品,主要提供福州、北京、上海 BGP 和香港 CN2 节点。萤光云的高防云服务器自带 50G 防御,适合高防建站、游戏高防等业务。这家厂商本次双十二算是性价比很高了。全线产品6折,上海 BGP 云服务器折扣更大 5.5 折(测试了一下是金...

一键去除宝塔面板各种计算题与延时等待

现在宝塔面板真的是越来越过分了,删除文件、删除数据库、删除站点等操作都需要做计算题!我今天升级到7.7版本,发现删除数据库竟然还加了几秒的延时等待,也无法跳过!宝塔的老板该不会是小学数学老师吧,那么喜欢让我们做计算题!因此我写了个js用于去除各种计算题以及延时等待,同时还去除了软件列表页面的bt企业版广告。只需要执行以下命令即可一键完成!复制以下命令在SSH界面执行:Layout_file="/w...

10GBIZ(月$2.36 ), 香港和洛杉矶CN2 GIA

10GBIZ服务商经常有看到隔壁的一些博客分享内容,我翻看网站看之前有记录过一篇,只不过由于服务商是2020年新成立的所以分享内容比较谨慎。这不至今已经有将近两年的服务商而且云服务产品也比较丰富,目前有看到10GBIZ服务商有提供香港、美国洛杉矶等多机房的云服务器、独立服务器和站群服务器。其中比较吸引到我们用户的是亚洲节点的包括香港、日本等七星级网络服务。具体我们看看相关的配置和线路产品。第一、香...

java发邮件为你推荐
expireredis expire 命令有什么好处hotfix文件夹hotfix中都是什么文件?能不能删除?按键精灵教程怎么使用按键精灵按键精灵教程按键精灵要怎么学?开发者账号如何免费申请开发者账号招行信用卡还款招行信用卡怎么还款code查询手机CODE查询教学视频网站谁有各种教学视频网站呀.?开房数据库ODBC数据库是什么呢?黑屏操作麻烦问一下 黑屏的各个指令
金万维动态域名 enom hawkhost 云主机51web 512m内存 网通服务器ip gspeed 华为云服务登录 raid10 联通网站 数据库空间 免费个人主页 广东主机托管 godaddy空间 腾讯网盘 websitepanel 中美互联网论坛 cx域名 西部主机 极域网 更多