JAVA邮件发送

合集下载

java 邮件发送失败处理方案

java 邮件发送失败处理方案

java 邮件发送失败处理方案作为一名职业写手,我将为您详细阐述Java邮件发送失败的处理方案。

在实际应用中,邮件发送失败可能会给工作和生活带来诸多不便。

以下我们将分析失败原因及相应的解决方案,帮助您轻松应对邮件发送问题。

一、问题概述邮件发送失败,通常表现为邮件无法送达收件人手中。

这种情况可能是由多种原因导致的,我们需要针对具体原因进行排查和处理。

二、失败原因分析1.邮件服务器问题:邮件服务器出现故障或维护,可能导致邮件发送失败。

2.网络连接问题:网络不稳定或连接中断,会影响邮件的正常发送。

3.邮件账号问题:发件人或收件人的邮件账号设置有误,如密码错误、邮箱空间不足等。

4.邮件内容问题:邮件中含有敏感词汇或超大附件,可能导致邮件被拦截或拒绝。

5.发送频率问题:短时间内发送大量邮件,可能会触发邮件服务器的防垃圾邮件机制,导致发送失败。

三、解决方案1.检查邮件服务器:确认邮件服务器是否正常运行,如有问题,等待服务器恢复正常或联系运维人员进行处理。

2.检查网络连接:确保网络稳定且连接正常,修复网络故障。

3.检查邮件账号信息:核实发件人及收件人的邮件账号、密码等信息是否正确,清理邮箱空间,确保邮箱正常使用。

4.优化邮件内容:避免使用敏感词汇,减小附件大小,保证邮件内容合规。

5.调整发送频率:避免短时间内大量发送邮件,可采用批量发送或分批发送的方式。

6.使用第三方邮件发送服务:考虑使用第三方邮件发送平台,如SendGrid、Mailgun等,提高邮件发送成功率。

四、失败处理流程当发现邮件发送失败时,请按照以下流程进行处理:1.分析失败原因:根据错误提示或邮件服务器日志,初步判断失败原因。

2.排查问题:针对原因进行分析,逐一排查相关因素。

3.解决问题:找到问题后,及时采取相应措施进行解决。

4.测试发送:解决问题后,重新发送邮件并观察发送结果。

5.优化方案:总结失败经验,优化邮件发送方案,预防类似问题再次发生。

java 邮件发送失败处理方案

java 邮件发送失败处理方案

java 邮件发送失败处理方案onclick事件是一种在HTML和JavaScript中非常常用的事件类型之一。

它用于在顶级元素上绑定单击事件处理程序。

在这个事件的函数中,您可以执行任何JavaScript功能。

onclick事件可以用于按钮、链接、图像等元素上。

当用户单击元素时,onclick 事件将发生并触发相应的JavaScript函数。

在将onclick事件附加到元素时,您可以完全自定义触发事件的函数。

在这篇文章中,我们将深入研究onclick事件的用法,并探讨它在Web开发中的重要性。

表单提交onclick事件通常用于处理表单的提交。

表单通常包含文本输入字段、单选按钮、复选框等。

在表单中,用户通常输入一些信息并单击提交按钮,将其发送到Web 服务器上的PHP或Python脚本。

在这种情况下,我们可以将onclick事件附加到表单提交按钮上,并定义一个函数来处理提交事件。

这个函数可以执行以下操作:验证表单字段是否已填写将表单字段值打包成JSON格式的字符串通过AJAX发送POST请求将数据发送到服务器AJAX请求:当onclick事件发生时,该函数使用AJAX从服务器检索数据。

AJAX (异步JavaScript和XML)是一种用于创建无需使用页面刷新就可以更新Web 页面的Web技术。

使用AJAX,可以使用JavaScript代码向Web服务器发送HTTP请求,并在获得响应后处理它。

用JavaScript中的XMLHttpRequest对象来创建AJAX请求,XMLHttpRequest对象有许多有用的方法和属性,可用于在AJAX对象中处理Web响应。

常规数据收集和分析onclick事件还可以用于从Web页面收集和分析用户行为数据。

当用户与页面上的元素交互或单击时,可以记录它们点击了什么,什么时间点击,以及在页面上停留的时间等信息。

这种收集数据的能力对于增加网站性能非常有用。

通过分析数据,您可以了解用户行为,并确定如何更好地为他们提供服务。

JavaWeb(十三)使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

JavaWeb(十三)使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

JavaWeb(⼗三)使⽤javamail进⾏发送邮件,(使⽤QQ,163,新浪邮箱服务器) 加油加油。

--WZY⼀、发送邮件的原理 在了解其原理之前,先要知道两个协议,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协议,默认端⼝,25 POP3:Post Office Protocol 3,即邮局协议,接收邮件的协议,默认端⼝,110 知道了这两个协议,下⾯来说说邮件发送和接收的原理图,分两种,相同邮件(QQ邮箱给QQ邮箱)和不同邮件(QQ邮箱给163邮箱)是不⼀样的。

解释: 为了⽅便起见,将新浪邮箱,list@称为⽤户A,将搜狐邮箱,wangwu@ 称为⽤户B ⽤户A(新浪邮箱,list@)给⽤户B(搜狐邮箱,wangwu@)发送⼀封邮件,那么整个过程就为图中的实线部分,⽤户A通过OutLook(浏览器或者客户端)登录⾃⼰的邮箱帐号,编写邮件,使⽤Smtp协议发送给Sina的邮件服务器中的Smtp服务器(专门⽤来发送的服务器),然后在通过SMTP协议,传输给Sohu的邮件服务器中的Smtp服务器,然后通过Sohu的Smtp服务器将邮件发送给⽤户B的存储设备进⾏存储(每个⽤户都会有⼀个存储空间⽤来存储邮件的),到这⾥,⽤户A就相当于发送成功了,因为已经到达了⽬的地,如果B⽤户需要查看邮件内容,必须通过POP3服务器将从⾃⼰的存储设备中拿到,然后返回到浏览器或者客户端中显⽰。

⽤户B给⽤户A发送⼀封邮件,那么整个过程就为图中的虚线部分,是和A给B发⼀样的步骤 ⽤户A给⼀个同样使⽤新浪邮箱的⽤户C发送⼀封邮件,那么其过程就简单的多了,先通过Smtp服务器,然后smtp服务器会将其发送到⽤户C的存储设备上,A发送邮件就成功了,⽤户C要显⽰⾃⼰邮箱中的邮件,那么就通过POP3服务器从⾃⼰存储设备中拿取所有邮件进⾏查看。

⼆、通过Java代码实现发送邮件 2.1、准备jar包 核⼼:mail.jar 依赖:activation.jar,邮件需要发送附件时使⽤ 2.2、使⽤163邮箱发送邮件 2.2.1、⾸先在163邮箱中注册⼀个帐号。

Java实现发送邮件,图片,附件

Java实现发送邮件,图片,附件

Java实现发送邮件,图⽚,附件1、JavaMail 介绍JavaMail 是sun公司(现以被甲⾻⽂收购)为⽅便Java开发⼈员在应⽤程序中实现邮件发送和接收功能⽽提供的⼀套标准开发包,它⽀持⼀些常⽤的邮件协议,如前⾯所讲的SMTP,POP3,IMAP,还有MIME等。

我们在使⽤JavaMail API 编写邮件时,⽆须考虑邮件的底层实现细节,只要调⽤JavaMail 开发包中相应的API类就可以了。

JavaMail 下载地址:2、JavaMail APIJavaMail API 按照功能可以划分为如下三⼤类:①、创建和解析邮件的API②、发送邮件的API③、接收邮件的API以上三种类型的API在JavaMail 中由多个类组成,但是主要有四个核⼼类,我们在编写程序时,记住这四个核⼼类,就很容易编写出Java邮件处理程序。

Message 类:javax.mail.Message 类是创建和解析邮件的核⼼ API,这是⼀个抽象类,通常使⽤它的⼦类javax.mail.internet.MimeMessage 类。

它的实例对象表⽰⼀份电⼦邮件。

客户端程序发送邮件时,⾸先使⽤创建邮件的 JavaMail API 创建出封装了邮件数据的 Message 对象,然后把这个对象传递给邮件发送API(Transport 类)发送。

客户端程序接收邮件时,邮件接收API把接收到的邮件数据封装在Message 类的实例中,客户端程序在使⽤邮件解析API从这个对象中解析收到的邮件数据。

Transport 类:javax.mail.Transport 类是发送邮件的核⼼API 类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如 SMTP 协议,客户端程序创建好Message 对象后,只需要使⽤邮件发送API 得到 Transport 对象,然后把 Message 对象传递给 Transport 对象,并调⽤它的发送⽅法,就可以把邮件发送给指定的 SMTP 服务器。

使用java发送短信和邮件

使用java发送短信和邮件

使⽤java发送短信和邮件(1)发送短信1.1在中国⽹建SMS上注册⼀个⽤户名,并获取短信密钥(⾮登录密码)1.2代码import java.io.IOException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.HttpException;import ValuePair;import mons.httpclient.methods.PostMethod;public class SendMessage {/*** @param args* @throws IOException* @throws HttpException*/public static void main(String[] args) throws HttpException, IOException {HttpClient client=new HttpClient();PostMethod post=new PostMethod("");//在头⽂件中设置转码post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");NameValuePair[] data={new NameValuePair("Uid","⽹建注册⽤户名"),new NameValuePair("Key","短信密钥"),new NameValuePair("smsMob","接收号码"),new NameValuePair("smsText","短信内容")};post.setRequestBody(data);client.executeMethod(post);Header[] headers=post.getRequestHeaders();int statusCode=post.getStatusCode();System.out.println("statusCode:"+statusCode);for(Header h:headers){System.out.println(h.toString());}String result=new String(post.getResponseBodyAsString().getBytes("gbk"));System.out.println(result);post.releaseConnection();}1.3注意需要引⼊包:commons-logging-1.1.1.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar1.4StatusCode说明:短信发送后返回值说 明-1没有该⽤户账户-2接⼝密钥不正确不是账户登陆密码-21MD5接⼝密钥加密不正确-3短信数量不⾜-11该⽤户被禁⽤-14短信内容出现⾮法字符-4⼿机号格式不正确-41⼿机号码为空-42短信内容为空-51短信签名格式不正确接⼝签名格式为:【签名内容】-6IP限制⼤于0短信发送数量2、发邮件2.1smtp验证类import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class SmtpAuthenticator extends Authenticator {String username=null;String password=null;public SmtpAuthenticator(String name,String password) {super();ername=name;this.password=password;}public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(ername, this.password);}}2.2发邮件的⼯具类import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class JavaMailSendUtil {public void sendMail(String subject,String from,String[] to,String test,String[] filenames,String mineType){try {Properties props=new Properties();String smtp="";//设置发送邮件所⽤到的smtpString servername="188********@";String serverpassword="************";Session mailSession=null;MimeMessage mimeMsg=null;props=ng.System.getProperties();props.put("mail.smtp.host", smtp);//设置SMTP主机props.put("mail.smtp.auth", "true");//是否到服务器⽤户名和密码验证//到服务器验证发送的⽤户名和密码是否正确SmtpAuthenticator myEmailAuther=new SmtpAuthenticator(servername, serverpassword);//设置邮件会话注意这⾥讲认证信息放进了Session的创建参数⾥mailSession=javax.mail.Session.getInstance(props,(Authenticator)myEmailAuther);//设置传输协议javax.mail.Transport transport=mailSession.getTransport("smtp");//设置from、to等信息mimeMsg=new javax.mail.internet.MimeMessage(mailSession);if(from!=null&&!from.equals("")){InternetAddress sendFrom=new InternetAddress(from);mimeMsg.setFrom(sendFrom);//设置发送⼈地址}InternetAddress[] sendTo=new InternetAddress[to.length];for(int i=0;i<to.length;i++){System.out.println("发送到:"+to[i]);sendTo[i]=new InternetAddress(to[i]);}mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject,"gb2312");MimeBodyPart messageBodyPart1=new MimeBodyPart();messageBodyPart1.setContent(test,mineType);//附件传输格式Multipart multipart=new MimeMultipart();multipart.addBodyPart(messageBodyPart1);for(int i=0;i<filenames.length;i++){MimeBodyPart messageBodyPart2=new MimeBodyPart();String filename=filenames[i].split(";")[0];System.out.println(filename);String displatname=filenames[i].split(";")[1];//得到数据源FileDataSource fds=new FileDataSource(filename);//BodyPart添加附件本⾝messageBodyPart2.setDataHandler(new DataHandler(fds));//BodyPart添加附件⽂件名messageBodyPart2.setFileName(MimeUtility.encodeText(displatname));multipart.addBodyPart(messageBodyPart2);}mimeMsg.setContent(multipart);//设置信件头的发送⽇期mimeMsg.setSentDate(new Date());mimeMsg.saveChanges();//发送邮件Transport.send(mimeMsg);transport.close();System.out.println("消息发送成功");} catch (Exception e) {// TODO: handle exception}}}2.3测试类public class TestMailSend {/*** @param args*/public static void main(String[] args) {String title="测试邮件";String from="188********@";String sendTo[]={"1245226995@","jlsong186@"};String content="just test java send mail<br><a href=\"\">My blog</a>"; String fileNames[]={"F:\\068.JPG;068.JPG"};JavaMailSendUtil test=new JavaMailSendUtil();try {test.sendMail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312");} catch (Exception e) {e.printStackTrace();}}}。

Java发送邮件的基本配置与步骤

Java发送邮件的基本配置与步骤

Java 发送邮件的基本配置与步骤Java发送邮件的基本配置与步骤jav a这⾥简单介绍⼀种利⽤Java 来发送邮件的⽅法。

Maven的POM.xml⽂件加载jar包编写邮件发送的⼯具类这⾥需要编写⼀个邮件发送的⼯具类,以后在其他的代码中只需要调⽤这个⼯具类,传⼊⼏个参数就可以直接发送邮件了。

⼯具类代码<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.5.6</version></dependency><dependency><groupId>com.sun.activation</groupId><artifactId>javax.activation</artifactId><version>1.2.0</version></dependency>import java.util.Properties;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class EmailUtils {public static void SendEmailInfoUser (String sendAddress, String title, String content,String copysendAddress) throws Exception { Properties properties = new Properties();//设置服务器名称properties.setProperty("mail.host", "");//设置邮件传输协议properties.setProperty("mail.transport.protocol", "smtp");//设置是否要验证服务器⽤户名和密码properties.setProperty("mail.smtp.auth", "true");// 1.创建客户端与邮箱服务器的Session 对象Session session = Session.getInstance(properties);// 2.开启session 的debug 模式,⽅便查看发送email 的运⾏状态session.setDebug(true );// 3.通过session 得到transport 传输对象Transport transport = session.getTransport();// 4.使⽤⽤户名密码连接上邮箱服务器,此处的密码需要到邮箱开启服务设置transport.connect("", "abc@", "password");// 5.创建邮件Message message = createSimpleMail(session, sendAddress, title, content,copysendAddress);// 6.发送邮件transport.sendMessage(message, message.getAllRecipients());transport.close();}private static Message createSimpleMail (Session session, String sendAddress, String title, String content,String copysendAddress) throws Exception{// 创建邮件对象MimeMessage message = new MimeMessage(session);// 指明邮件的发件⼈message.setFrom(new InternetAddress("alltoforever@"));// 指明邮件的收件⼈message.setRecipient(Message.RecipientType.TO, new InternetAddress(sendAddress));// 邮件的标题message.setSubject(title);// 邮件的内容message.setContent(content, "text/html;charset=UTF-8")// 设置抄送⼈message.setRecipients(, InternetAddress.parse(copysendAddress));return message;}}。

javamaven项目实现发送邮件

javamaven项目实现发送邮件

javamaven项⽬实现发送邮件1,先导⼊⼀个jar包在pom.xml 中写⼊<!-- 邮件start --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><!-- 邮件end -->2,写⼀个邮件的类包括,发送内容,端⼝等public class MailSenderInfo {// 发送邮件的服务器的IP和端⼝private String mailServerHost;private String mailServerPort = "25";// 邮件发送者的地址private String fromAddress;// 邮件接收者的地址private String toAddress;// 登陆邮件发送服务器的⽤户名和密码private String userName;private String password;// 是否需要⾝份验证private boolean validate = false;// 邮件主题private String subject;// 邮件的⽂本内容private String content;// 邮件附件的⽂件名private String[] attachFileNames;private String iwallHost ;/*** 获得邮件会话属性*/public Properties getProperties(){Properties p = new Properties();p.put("mail.smtp.host", this.mailServerHost);p.put("mail.smtp.port", this.mailServerPort);p.put("mail.smtp.auth", validate ? "true" : "false");return p;}public String getMailServerHost() {return mailServerHost;}public void setMailServerHost(String mailServerHost) {this.mailServerHost = mailServerHost;}public String getMailServerPort() {return mailServerPort;}public void setMailServerPort(String mailServerPort) {this.mailServerPort = mailServerPort;}public boolean isValidate() {return validate;}public void setValidate(boolean validate) {this.validate = validate;}public String[] getAttachFileNames() {return attachFileNames;}public void setAttachFileNames(String[] fileNames) {this.attachFileNames = fileNames;}public String getFromAddress() {return fromAddress;}public void setFromAddress(String fromAddress) {this.fromAddress = fromAddress;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getToAddress() {return toAddress;}public void setToAddress(String toAddress) {this.toAddress = toAddress;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String textContent) {this.content = textContent;}public String getIwallHost() {return iwallHost;}public void setIwallHost(String iwallHost) {this.iwallHost = iwallHost;}}3,为了可配置性,可将上⾯的类的所需信息写⼊配置⽂件⾥<bean id = "mailInfo" class = "xxxxxxx.MailSenderInfo" ><property name="mailServerHost" value = ""></property> <property name="mailServerPort" value = "25"></property><property name="fromAddress" value = "xxxxxxx@xx.xxx"></property><property name="userName" value = "xxxxxxxx"></property><property name="password" value = "xxxxx"></property><property name="iwallHost" value = "http://localhost:8080/xxxxx"></property> </bean>4,写⼀个简单的发送邮件的类,包含发送text或者 html的⽅法public class SimpleMailSender {/*** 以⽂本格式发送邮件* @param mailInfo 待发送的邮件的信息*/public boolean sendTextMail(MailSenderInfo mailInfo) {// 判断是否需要⾝份认证MyMailAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();if (mailInfo.isValidate()) {// 如果需要⾝份认证,则创建⼀个密码验证器authenticator = new MyMailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,authenticator);try {// 根据session创建⼀个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());mailMessage.setRecipient(Message.RecipientType.TO,to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// 设置邮件消息的主要内容String mailContent = mailInfo.getContent();mailMessage.setText(mailContent);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}/*** 以HTML格式发送邮件* @param mailInfo 待发送的邮件信息*/public static boolean sendHtmlMail(MailSenderInfo mailInfo){// 判断是否需要⾝份认证MyMailAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();//如果需要⾝份认证,则创建⼀个密码验证器if (mailInfo.isValidate()) {authenticator = new MyMailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); }// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,authenticator);try {// 根据session创建⼀个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());// Message.RecipientType.TO属性表⽰接收者的类型为TOmailMessage.setRecipient(Message.RecipientType.TO,to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// MiniMultipart类是⼀个容器类,包含MimeBodyPart类型的对象Multipart mainPart = new MimeMultipart();// 创建⼀个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容mailMessage.setContent(mainPart);// 发送邮件Transport.send(mailMessage);return true;} catch (MessagingException ex) {ex.printStackTrace();}return false;}}5,在类中,实现发送邮件,建议另起线程发送邮件/*** 发送邮件内部类**/class SendEmailThread implements Runnable {private MailSenderInfo mailInfo;public SendEmailThread(MailSenderInfo mailInfo) {this.mailInfo = mailInfo;}@Overridepublic void run() {try {if (this.mailInfo != null) {SimpleMailSender.sendHtmlMail(mailInfo);}} catch (Exception e) {e.printStackTrace();}}}/*** 发送邮件⽅法** @param account* @param code*/public void sendEmail(String account, String code) {WebApplicationContext ac = ContextLoader.getCurrentWebApplicationContext();// 获取当前服务IPMailSenderInfo mailInfo = (MailSenderInfo) ac.getBean("mailInfo");mailInfo.setValidate(Boolean.TRUE);mailInfo.setToAddress(account);mailInfo.setSubject("验证码邮件");mailInfo.setContent("<p>您好!</p><p>感谢您注册成为xxxxxx⽤户!</p><p>您的验证码是:" + code + "。

java邮件发送(单人,多人,抄送,Excel附件)

java邮件发送(单人,多人,抄送,Excel附件)

java邮件发送(单⼈,多⼈,抄送,Excel附件) 直接上代码保存吧package com.westvalley.ceiec.page.report.sendmail;import weaver.email.EmailEncoder;import javax.mail.*;import javax.mail.internet.*;import javax.mail.util.ByteArrayDataSource;import javax.activation.*;import mons.logging.Log;import mons.logging.LogFactory;import ermodel.HSSFWorkbook;import crivia.db.i.DataSet;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.*;/**邮件发送⼯具类* @author whh*/public class Email {Log log = LogFactory.getLog(this.getClass());//发件⼈地址private String mail_from;public void setMail_from(String mailFrom) {mail_from = mailFrom;}public String getMail_from() {return mail_from;}//发件⼈密码private String password;public void setPassword(String password) {this.password = password;}public String getPassword() {return password;}//收件地址private String mail_to;public void setMail_to(String mailTo) {mail_to = mailTo;}public String getMail_to() {return mail_to;}//主题private String title;public void setTitle(String title) {this.title = title;}public String getTitle() {return title;}//内容private String message;public void setMessage(String message) {this.message = message;}public String getMessage() {return message;}//发件⼈邮件服务器如: 191.0.0.6private String send_server;public void setSend_server(String sendServer) {send_server = sendServer;}public String getSend_server() {return send_server;}/** 单个发送 setMail_to(String mailTo)* @return是否正确发送* @throws AddressException*/public boolean SendMail()throws AddressException{try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from); message.setFrom(from_address);//设置收件⼈InternetAddress to_address = new InternetAddress(this.mail_to);message.setRecipient(Message.RecipientType.TO, to_address);//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("向"+this.mail_to+"发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.toString());return false;}}/**群发* @param addresses 地址list* @return* @throws AddressException*/public boolean SendMail(List<String> addresses) throws AddressException{ try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from); message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/** 多⼈发送并抄送增加:2017-04-25 whh* @param addresses 收件邮箱(多个)* @param ccAddresses 抄送邮箱(多个)* @return* @throws AddressException*/public boolean SendMail(List<String> addresses, List<String> ccAddresses) throws AddressException{if(0==ccAddresses.size()){ //20170428 whhreturn SendMail(addresses);}try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from);message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置抄送⼈final int ccSize = ccAddresses.size();if(ccSize > 0){InternetAddress cc_Address[] = new InternetAddress[ccSize];for(int i=0; i<ccSize; i++){cc_Address[i] = new InternetAddress(ccAddresses.get(i));}message.setRecipients(, cc_Address);}//设置主题message.setSubject(title);//设置内容message.setContent(this.message, "text/html;charset=UTF-8");//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/** 多⼈发送并抄送增加:2019-06-14 whh* @param addresses 收件邮箱(多个)* @param ccAddresses 抄送邮箱(多个)* @param is 附件* @return* @throws AddressException*/public boolean SendMail(List<String> addresses, List<String> ccAddresses,HSSFWorkbook workBook,String workBookName) throwsAddressException{try{int n = this.mail_from.indexOf('@');int m = this.mail_from.length();//取邮件的服务器String server = this.mail_from.substring(n+1, m);//建⽴邮件会话Properties pro = new Properties();pro.put("mail.smtp.host", "smtp."+server);pro.put("mail.smtp.auth", "true");Session sess = Session.getInstance(pro);sess.setDebug(true);//新建⼀个消息对象MimeMessage message = new MimeMessage(sess);//设置发件⼈InternetAddress from_address = new InternetAddress(this.mail_from);message.setFrom(from_address);//设置收件⼈,多个final int num = addresses.size();InternetAddress to_address[] = new InternetAddress[num];for(int i=0; i<num; i++){to_address[i] = new InternetAddress(addresses.get(i));}message.setRecipients(Message.RecipientType.TO, to_address);//设置抄送⼈final int ccSize = ccAddresses.size();if(ccSize > 0){InternetAddress cc_Address[] = new InternetAddress[ccSize];for(int i=0; i<ccSize; i++){cc_Address[i] = new InternetAddress(ccAddresses.get(i));}message.setRecipients(, cc_Address);}//附件ByteArrayOutputStream baos = new ByteArrayOutputStream();workBook.write(baos);baos.flush();byte[] bt = baos.toByteArray();InputStream is = new ByteArrayInputStream(bt, 0, bt.length);baos.close();/*添加正⽂内容*/Multipart multipart = new MimeMultipart();BodyPart contentPart = new MimeBodyPart();// contentPart.setText(this.message);// contentPart.setHeader("Content-Type", "text/html;charset=UTF-8");contentPart.setContent(this.message, "text/html;charset=UTF-8");multipart.addBodyPart(contentPart);/*添加附件*/MimeBodyPart fileBody = new MimeBodyPart();DataSource source = new ByteArrayDataSource(is, "application/msexcel"); fileBody.setDataHandler(new DataHandler(source));// 中⽂乱码问题fileBody.setFileName(MimeUtility.encodeText(workBookName+".xls"));multipart.addBodyPart(fileBody);//设置主题message.setSubject(title);//设置内容message.setContent(multipart);//设置发送时间message.setSentDate(new Date());//发送邮件message.saveChanges(); //保存邮件信息//设置发送的格式Transport transport = sess.getTransport("smtp");if(this.send_server == null){transport.connect("191.0.0.6", this.mail_from, password);}else{transport.connect(this.send_server, this.mail_from, password);}transport.sendMessage(message, message.getAllRecipients());transport.close();("发送邮件成功");return true;}catch(Exception e){("发送邮件失败,原因可能是"+e.getMessage());return false;}}/**邮箱初始化,发件⼈邮箱、密码及服务器信息的获取* @return正确获取时返回Email对象,否则为null*/public static Email intiEmail(){// Log log = LogFactory.getLog(this.getClass());Email email = new Email();//获取系统的邮箱信息DataSet data = SQL.select(SQL.sql_Array(" select defmailpassword" +",defmailserver,defmailfrom from SystemSet "));if(data.next()){//发件⼈邮箱地址email.setMail_from(data.get("defmailfrom"));//获取并解析邮箱密码email.setPassword(EmailEncoder.DecoderPassword(data.get("defmailpassword")));// ("Password:"+EmailEncoder.DecoderPassword(data.get("defmailpassword"))); //服务器信息email.setSend_server(data.get("defmailserver"));}if(email.getMail_from().equals("")||email.getPassword().equals("")||email.getSend_server().equals("")){// ("发送⼈邮箱错误");// ("From:"+email.getMail_from()+"Password:"+// email.getPassword()+"Server:"+email.getSend_server());return null;}return email;}}。

Java基于JavaMail实现向QQ邮箱发送邮件

Java基于JavaMail实现向QQ邮箱发送邮件

Java基于JavaMail实现向QQ邮箱发送邮件最近项⽬在做新闻爬⾍,想实现这个功能:爬⾍某个页⾯失败后,把这个页⾯的 url 发到邮箱。

最终实现的效果图如下,后期可以加上过滤标签、失败状态码等,⽅便分类搜索异常。

开发⼈员可以根据邮件⾥的 url 和堆栈信息,分析爬⾍失败的原因。

是不是服务器 down 了?还是爬⾍的 Dom 解析没有解析到内容?还是正则表达式对于这个页⾯不适⽤?开启SMTP服务在 QQ 邮箱⾥的设置->账户⾥开启 SMTP 服务注意开启完之后,QQ 邮箱会⽣成⼀个授权码,在代码⾥连接邮箱使⽤这个授权码⽽不是原始的邮箱密码,这样可以避免使⽤明⽂密码。

⽹上查了⼀下例⼦,根据这篇⽂章 Java Mail(⼆):JavaMail介绍及发送⼀封简单邮件的⽰例代码。

Properties props = new Properties();// 开启debug调试props.setProperty("mail.debug", "true");// 发送服务器需要⾝份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", "");// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");Session session = Session.getInstance(props);//邮件内容部分Message msg = new MimeMessage(session);msg.setSubject("seenews 错误");StringBuilder builder = new StringBuilder();builder.append("url = " + "/never_cxb/article/details/50524571");builder.append("页⾯爬⾍错误");builder.append("\n data " + TimeTool.getCurrentTime());msg.setText(builder.toString());//邮件发送者msg.setFrom(new InternetAddress("**发送⼈的邮箱地址**"));//发送邮件Transport transport = session.getTransport();transport.connect("", "**发送⼈的邮箱地址**", "**你的邮箱密码或者授权码**");transport.sendMessage(msg, new Address[] { new InternetAddress("**接收⼈的邮箱地址**") });transport.close();但是报错了DEBUG SMTP: AUTH LOGIN command trace suppressedDEBUG SMTP: AUTH LOGIN failedException in thread "main" javax.mail.AuthenticationFailedException: 530Error: A secure connection is requiered(such as ssl). More information at /cgi-bin/help?id=28因为⽰例代码是⽤的163邮箱,⽽笔者是 QQ 邮箱,看 Log 分析是 QQ 邮箱需要 SSL 加密。

java利用springJavaMailSenderImpl发送邮件,支持普通文本、附件、。。。

java利用springJavaMailSenderImpl发送邮件,支持普通文本、附件、。。。

java利⽤springJavaMailSenderImpl发送邮件,⽀持普通⽂本、附件、。

博客分类:本⽂主要介绍利⽤发送邮件。

⾸先介绍了发送⼀般邮件,然后介绍了发送富⽂本(html)邮件及以velocity为模板发送邮件。

邮件发送分为为三步:创建邮件发送器、编写邮件、发送邮件。

Spring的提供了强⼤的邮件发送功能,可发送普通⽂本邮件、带附件邮件、html格式邮件、带图⽚邮件、设置发送内容编码格式、设置发送⼈的显⽰名称。

下⾯就进⾏介绍,⽰例代码中很多都是字符串硬编码,实际使⽤时推荐使⽤spring的配置⽂件进⾏配置。

1、创建邮件发送器⾸先定义对象,并对其进⾏smtp相关信息设置,相当于我们⾃⼰的邮箱,如下:Java代码1. JavaMailSenderImpl mailSender = new JavaMailSenderImpl();2. mailSender.setHost("");3. mailSender.setUsername("mosaic@");4. mailSender.setPassword("asterisks");JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost("");mailSender.setUsername("mosaic@");mailSender.setPassword("asterisks");当然更好的⽅法是使⽤配置⽂件进⾏配置,这⾥只是进⾏介绍,忽略硬编码先。

以上主机为邮箱服务商的smtp地址,⽤户名、密码为⽤户⾃⼰的邮箱。

除以上外还可以设置setPort(int port) 、setProtocol(String protocol) 等,可暂时不考虑。

send email with microsoft graph apis 的java例子

send email with microsoft graph apis 的java例子

send email with microsoft graph apis的java例子引言概述:在当今数字化时代,电子邮件成为了人们日常沟通的重要工具。

为了满足不同需求,许多开发者使用Microsoft Graph APIs来发送电子邮件。

本文将通过Java语言提供一些有关使用Microsoft Graph APIs发送电子邮件的示例。

正文内容:1. 连接到Microsoft Graph API1.1 获取访问令牌(Access Token)要使用Microsoft Graph API发送电子邮件,首先需要连接到API。

使用Java语言,可以通过OAuth 2.0授权流程获取访问令牌。

这可以通过调用Microsoft的身份验证服务来完成。

1.2 设置访问令牌(Access Token)获取访问令牌后,需要将其设置为HTTP请求的头部授权标头。

这样,API将知道请求是经过授权的,并且可以执行相应的操作。

1.3 建立HTTP连接使用Java的HTTP库,可以建立与Microsoft Graph API的HTTP连接。

通过指定API的URL和请求类型,可以发送请求并接收响应。

2. 创建电子邮件2.1 设置电子邮件的主题和内容在发送电子邮件之前,需要设置电子邮件的主题和内容。

可以使用Java的字符串操作方法来构建电子邮件的主题和正文。

2.2 添加收件人和抄送人为了发送电子邮件,需要指定收件人和抄送人。

可以使用Microsoft Graph API 提供的电子邮件模板来设置收件人和抄送人的电子邮件地址。

2.3 添加附件如果需要发送附件,可以使用Java的文件操作方法来添加附件。

将附件的文件路径指定为API请求的一部分即可。

3. 发送电子邮件3.1 使用Microsoft Graph API发送电子邮件通过调用Microsoft Graph API的发送电子邮件功能,可以将构建好的电子邮件发送出去。

将API请求的URL设置为发送电子邮件的URL,并将电子邮件的内容作为请求的正文发送。

Java实现网易企业邮箱发送邮件

Java实现网易企业邮箱发送邮件

Java实现⽹易企业邮箱发送邮件最近项⽬需要⽤⽹易企业邮箱发送邮件,特意来将实现过程记录⼀下:maven导⼊jar包1 <!-- javax.mai 核⼼包 -->2 <dependency>3 <groupId>javax.activation</groupId>4 <artifactId>activation</artifactId>5 <version>1.1</version>6 </dependency>7 <dependency>8 <groupId>javax.mail</groupId>9 <artifactId>mail</artifactId>10 <version>1.4.5</version>11 </dependency>java 使⽤ javax.mail 实现企业邮箱邮件发送1 import java.util.Properties;2 import javax.mail.internet.InternetAddress;3 import javax.mail.internet.MimeMessage;4 import javax.mail.internet.MimeUtility;5 import org.apache.log4j.Logger;6 import org.springframework.mail.javamail.JavaMailSenderImpl;7 import org.springframework.mail.javamail.MimeMessageHelper;8 import com.sun.mail.util.MailSSLSocketFactory;910public class SendMailSmtp {11private static Logger log = Logger.getLogger(SendTemplateSMS.class);1219public static void sendHtmlMail() {20try{21 String from = "邮箱账号名";//发件⼈昵称展⽰ *22 String[] to ={"接收邮箱1","接收邮箱2"};//接收邮箱23 String subject = "邮件主题";//邮件主题 *24 String text = "邮件内容";25 String host = "";//163企业邮箱smtp *26 String username = "发件的企业邮箱";//企业邮箱 *27 String password= "发件的企业邮箱的授权码";//企业邮箱密码 *2829//设置服务器验证信息30 Properties prop = new Properties();31 prop.setProperty("mail.smtp.auth", "true");32 prop.setProperty("mail.smtp.timeout", "994"); // 加密端⼝(ssl) 可通过 https:///help/client-profile.html 进⾏查询3334 MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL加密35 sf.setTrustAllHosts(true); // 设置信任所有的主机36 prop.put("mail.smtp.ssl.enable", "true");37 prop.put("mail.smtp.ssl.socketFactory", sf);3839//设置邮件内容40 JavaMailSenderImpl javaMailSend = new JavaMailSenderImpl();41 MimeMessage message = javaMailSend.createMimeMessage();42 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");43 String nick = MimeUtility.encodeText(from);//设置昵称44 messageHelper.setFrom(new InternetAddress(nick + " <"+username+">"));// 邮件发送者45 messageHelper.setTo(to);46 messageHelper.setSubject(subject);47 messageHelper.setText(text, true);4849//设置邮件服务器登录信息50 javaMailSend.setHost(host);51 javaMailSend.setUsername(username);52 javaMailSend.setPassword(password);53 javaMailSend.setJavaMailProperties(prop);54 ("maillText:" + text);55 javaMailSend.send(message);56 } catch (Exception e) {57// TODO Auto-generated catch block58 log.error(e);59 e.printStackTrace();60 }61 }6263 }注意:1.邮箱密码是开通pop3/smtp服务时所给的授权码,⽽不是你注册邮箱时的真实密码2.检查⾃⼰邮箱是否开通pop3/smtp服务。

Java实现Email发送邮件(可发送html内容,样式可编辑)

Java实现Email发送邮件(可发送html内容,样式可编辑)

Java实现Email发送邮件(可发送html内容,样式可编辑)⼀.电⼦邮件协议:SMTP 简单邮件传输SMTP是Simple Mail Transfer Protocol的简称,即简单邮件传输协议。

该协议定义了邮件客户端软件和SMTP服务器之间,以及两台SMTP服务器之间的通信规则。

在Java Mail API中,基于Java Mail的程序将与本公司或Internet服务提供商(ISP)的SMTP服务器通信,该SMTP服务器将会把消息转发给⽤于接收消息的SMTP服务器,最后⽤户可通过POP或IMAP协议获取该消息。

由于⽀持⾝份验证,所以不需要SMTP服务器是⼀种开放的转发器,但需要确保SMTP服务器配置正确。

Java Mail API中没有集成⽤于处理配置服务器以转发消息或添加/删除电⼦邮件账户等功能。

POP3邮局协议POP3是Post Office Protocol 3的简称,即邮局协议第3版,该协议是在RFC 1939中定义的。

它是Internet电⼦邮件的第⼀个离线协议标准,也就是说,POP3是⼀个简单⽽实⽤的邮件信息传输协议。

⽬前在Internet上,⼤多数⼈都采⽤POP3来接收邮件。

POP3为每个⽤户的每个邮箱提供⽀持,但是POP3并不⽀持查看邮件信息及统计新邮件的功能,因此,在使⽤Java Mail API时,如果想获取这些信息,需要⾃⼰进⾏计算。

IMAP 接收邮件协议IMA P的含义是Internet消息访问协议,当前版本是第4版,也称作IMAP4,该协议是在RFC 2060中定义的。

IMAP是接收消息的更加⾼级协议。

使⽤IMAP时,所⽤邮件服务器必须⽀持该协议,但是如果所有邮件服务器只⽀持该协议,并不能使⽤全部IMAP协议,为了能够⽀持全部IMAP协议,所⽤邮件服务器还应该⽀持POP协议。

在Java Mail程序通过IMAP协议可以在服务器上拥有包括多个⽂件夹的⽤户,并且这些⽂件夹可以被多个⽤户共享。

java attachment用法

java attachment用法

java attachment用法Java的attachment用法主要是用于处理邮件附件的相关操作。

在使用Java发送邮件的过程中,如果需要添加附件,就可以使用attachment来实现。

下面将详细介绍attachment的用法。

1. 创建附件对象在Java中,可以使用MimeBodyPart类来表示邮件附件。

首先需要导入javax.mail.internet包,然后创建一个MimeBodyPart对象,用于表示附件。

import javax.mail.internet.MimeBodyPart;创建MimeBodyPart对象的方法如下:MimeBodyPart attachment = new MimeBodyPart();2. 设置附件内容设置附件的内容可以通过setDataHandler()方法来实现。

可以使用DataHandler对象来封装附件的数据源。

DataHandler类有多个构造方法可以使用,其中一个常用的是使用FileDataSource作为数据源。

String filePath = "路径/文件名";FileDataSource dataSource = new FileDataSource(filePath); DataHandler dataHandler = new DataHandler(dataSource); attachment.setDataHandler(dataHandler);3. 设置附件名称设置附件的名称可以通过设置Content-Type头部字段的filename属性来实现。

使用setFileName()方法可以方便地设置附件的名称。

String fileName = "附件名称";attachment.setFileName(fileName);4. 设置附件的类型附件的类型也需要进行设置,可以通过设置Content-Type头部字段的type属性来实现。

发送邮件及邮件附件java代码实例(支持多附件-群发送)

发送邮件及邮件附件java代码实例(支持多附件-群发送)

以下为Mail。

java的全部代码:package com.zlz3907。

mail;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;/*** 该类使用Socket连接到邮件服务器,* 并实现了向指定邮箱发送邮件及附件的功能。

**@author Zhong Lizhi*/public class Mail {/*** 换行符*/private static final String LINE_END = "\r\n”;/*** 值为“true”输出高度信息(包括服务器响应信息),值为“*false”则不输出调试信息.*/private boolean isDebug = true;/*** 值为“true”则在发送邮件{@link Mail#send()}* 过程中会读取服务器端返回的消息,* 并在邮件发送完毕后将这些消息返回给用户。

java mail send方法

java mail send方法

一、Java M本人l简介Java M本人l是用于在Java应用程序中发送、接收和管理电流新箱的API。

它提供了一种方便的方式来处理电流新箱,包括创建和发送电流新箱、接收邮件、检查邮件和删除邮件等功能。

二、Java M本人l发送邮件的方法发送邮件是Java M本人l API中最常用的功能之一。

下面是使用Java M本人l API发送邮件的步骤和方法:1. 导入相关的包在使用Java M本人l发送邮件之前,首先需要导入相关的包。

通常情况下,你需要导入javax.m本人l和javax.m本人l.internet这两个包。

2. 创建M本人l Session使用javax.m本人l.Session类创建一个用于连接到邮件服务器的会话对象。

会话对象包含了发送邮件所需的所有配置信息,比如邮件服务器的位置区域、端口号、账号和密码等。

你可以使用Session.getDefaultInstance()方法获取默认的会话对象,也可以使用Session.getInstance()方法根据自定义的配置获取会话对象。

3. 创建MimeMessage对象使用javax.m本人l.internet.MimeMessage类来创建一封邮件。

MimeMessage对象表示一封MIME格式的邮件,包括邮件的发件人、收件人、主题、正文和附件等信息。

4. 设置邮件内容在创建MimeMessage对象之后,可以使用其提供的方法来设置邮件的内容,比如设置发件人、收件人、主题、正文和附件等信息。

5. 发送邮件使用Transport类的send()方法来发送邮件。

在调用send()方法之前,需要先连接到邮件服务器,并使用账号和密码进行身份验证。

发送邮件成功后,需要关闭邮件连接。

三、示例代码下面是一个使用Java M本人l API发送邮件的示例代码:```javaimport javax.m本人l.*;import javax.m本人l.internet.*;import java.util.Properties;public class SendM本人l {public static void m本人n(String[] args) {// 设置邮件服务器Properties properties = new Properties();properties.setProperty("m本人l.smtp.host","smtp.example");properties.setProperty("m本人l.smtp.port", "25");// 创建会话对象Session session = Session.getDefaultInstance(properties);try {// 创建MimeMessage对象MimeMessage message = new MimeMessage(session);// 设置发件人message.setFrom(new InternetAddress("xxx"));// 设置收件人message.addRecipient(Message.RecipientType.TO, new InternetAddress("xxx"));// 设置主题message.setSubject("Test Em本人l");// 设置正文message.setText("This is a test em本人l.");// 发送邮件Transport.send(message);System.out.println("Em本人l sent successfully!");} catch (MessagingException e) {e.printStackTrace();}}}```四、注意事项在使用Java M本人l发送邮件时,需要注意以下几点:1. 邮件服务器的配置在发送邮件之前,需要确保邮件服务器的配置信息是正确的,包括服务器位置区域、端口号、账号和密码等。

Java课程设计邮件收发系统

Java课程设计邮件收发系统

Java课程设计邮件收发系统一、教学目标本课程的教学目标是使学生掌握Java语言基础,能够运用Java开发一个简单的邮件收发系统。

具体分为以下三个维度:1.知识目标:使学生掌握Java语言的基本语法、面向对象编程思想、常用类库和API。

2.技能目标:培养学生运用Java语言解决实际问题的能力,能够独立开发一个简单的邮件收发系统。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,增强其团队合作意识和创新精神。

二、教学内容教学内容以《Java核心技术》为基础,按照教材的章节顺序进行讲解。

主要内容包括:1.Java语言基本语法:数据类型、运算符、控制结构、数组、字符串等。

2.面向对象编程:类、对象、继承、多态、封装等。

3.Java常用类库和API:Java标准库、集合框架、多线程、网络编程等。

4.邮件收发系统开发:SMTP协议、POP3协议、JavaMl API等。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:用于讲解Java语言的基本语法、面向对象编程思想和常用类库。

2.案例分析法:通过分析实际案例,使学生掌握Java语言在实际问题中的应用。

3.实验法:安排实验课程,让学生动手实践,独立开发邮件收发系统。

四、教学资源1.教材:《Java核心技术》2.参考书:《Java Web开发实战》、《JavaMl编程指南》3.多媒体资料:PPT、教学视频、在线教程4.实验设备:计算机、网络设备5.在线编程平台:LeetCode、牛客网五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践四个方面,以保证评估的客观性和公正性。

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

2.作业:布置课后作业,评估学生对知识点的理解和应用能力。

3.考试:定期进行理论知识考试,评估学生的知识掌握程度。

4.项目实践:要求学生独立开发一个邮件收发系统,评估学生的实际操作能力和解决问题的能力。

基于java的邮件收发系统设计与实现

基于java的邮件收发系统设计与实现

摘要基于Java的邮件收发系统设计与实现在当今信息交流社会中,电子邮件在人们日常工作中扮演了举足轻重的角色,因为,太多的人们使用其发送不同的多媒体附件数据,且这种趋势势必会继续增加。

虽然,目前已经有不少的邮件收发系统,但是,大多数的邮件收发系统不能满足用户需求。

因此,论文详细地阐述关于Java 语言实现的邮件收发应用系统。

本文使用Java的面向图形用户界面编程方式,并且利用了网络协议中SMTP和POP作为底层开发的基础,实现了从协议底层开发与设计邮件收发系统软件。

SMTP协议的作用是发送邮件。

POP3协议全称是邮局协议第三版,作用是接收邮件。

本文中研发出完整的邮件收发系统,这个邮件收发应用程序可以发送纯文本邮件,也可发送带附件的邮件。

当然,登陆系统时可以选择使用不同的SMTP服务器。

经过开发测试,证明邮件收发系统软件满足用户需求。

邮件收发应用程序开发涉及到整体的系统界面设计与实现、网络协议分析与设计、系统功能实现编码工作等多个方面的内容。

本文的邮件收发系统主要包括邮件收发系统的登陆管理界面、邮件发送界面、接收邮件界面邮件定时发送界面和邮件提醒界面等基本功能,文中将会涉及到邮件系统的架构设计方法。

在该系统设计过程中要充分分析系统的逻辑结构图,其中主要包括:系统功能结构流程设计、系统的数据库表结构以及字段设计,业务功能的函数参数处理情况等等。

在整个的论文设计过程中,本文详细规划了邮件系统的全部功能模块及其功能描述,系统导航条菜单项的设置等等。

在本文的邮件系统的编码过程中,开发人员将会实现主要业务功能,系统的前段控件的事件处理过程以及页面美工实现。

最后,根据论文的设计需求对邮件收发管理系统整体测试,并在此给出部分功能的界面截图效果。

关键词:Java,SMTP协议,POP3协议,电子邮件AbstractDesign and Implementation of Mail System Transmit-Receive Based On Java In today's information society,e-mail in the people's life and work has played an important role,because too many people use it to send multimedia data of different accessories,and this trend will continue to increase.Although,there are a lot of mail receiving and sending system,but most of the e-mail system can not meet the needs of users.Therefore,the paper describes in detail the implementation of the Java language mail application system.In this paper,we use the Java oriented graphical user interface programming,and use the SMTP and POP in the network protocol as the basis for the development of the bottom. SMTP protocol is to send mail.The full name of the POP3protocol is the third version of the post office protocol,the role is to receive mail.In this paper,the development of a complete mail transceiver system,the mail application can send text messages,e-mail can also be sent with attachments.Of course,the landing system can choose to use different SMTP server.After the development of testing,to prove that the mail system software to meet user needs.The development and application of the mail sending and receiving application involves the design and implementation of the whole system interface,the analysis and design of the network protocol,the realization of the system function and so on.The mail system of this paper includes mail system login management interface,mail interface, receiving mail interface regularly send mail and mail reminder interface basic function interface,this paper will involve mail system architecture design method.In the system design process to fully analyze the logical structure of the system,which mainly includes: the structure and field of database design system function structure design process,system, business function parameters etc..In the whole design process of the paper,this text has designed all the function modules and the function description of the mail system in detail. In this paper,the coding process of the mail system,the developer will be able to achieve the main business functions,the system controls the event handling process and the realization of the page.Finally,according to the design requirements of the paper, the overall test of the mail management system is given.Keywords:Java,SMTP protocol,POP3protocol,E-mail目录摘要 (I)ABSTRACT (III)目录 (I)第1章绪论 (3)1.1课题来源 (2)1.2国内外相关研究综述 (2)1.3研究此课题的意义 (3)1.4论文的结构与组织 (4)第2章电子邮件的传输原理研究 (5)2.1关于电子邮件 (6)2.1.1电子邮件的接受与发送 (6)2.1.2电子邮件地址的构成 (6)2.2电子邮件的工作原理 (6)2.3SMTP的工作原理 (9)2.3.1POP3协议介绍 (10)2.3.2POP3协议指令 (10)2.3.3POP3工作原理 (11)2.4电子信件格式的标准 (12)2.4.1RFC822介绍 (12)2.4.2信件的头部 (13)2.4.3标准的信头字段 (13)2.5本章小结 (16)第3章电子邮件系统设计 (16)3.1开发步骤 (17)3.1.1开发准备 (17)3.1.2环境搭建 (17)3.2系统实体分析 (18)3.2.1实体分析 (18)3.2.2实体类图分析 (18)3.3邮件收发系统的模块与功能设计 (19)3.3.1系统模块 (19)3.3.2模块功能 (20)3.4功能模块的流程图 (21)3.4.1系统功能的总体框架图 (21)3.4.2发送邮件流程图 (21)3.4.3阅读邮件流程图 (22)3.4.4邮件收发系统的详细功能图 (22)3.5数据库设计 (22)3.5.1数据库概念设计 (22)3.5.2部分数据表结构设计 (23)3.6本章小结 (24)第4章邮件收发系统的功能界面 (25)4.1邮件收发系统登录界面 (25)4.2系统的主界面 (26)4.3发送邮件界面 (26)4.4收件箱、回收站界面 (29)4.5联系人界面 (30)4.7新邮件提醒通知 (31)4.8邮件收发系统的部分代码 (31)4.8.1发送代码 (31)4.8.2接收代码 (32)4.8.3检查邮件 (34)4.8.4联系人列表表格模型 (34)4.8.5邮件操作代码 (35)4.9本章小结 (37)第五章总结与展望 (38)参考文献 (38)作者简介及在学期间所取得的科研成果 (41)致谢 (42)第1章绪论第1章绪论1.1课题来源电子邮件作为互联网上传输多媒体文件的重要工具,从电子邮件的诞生以来,都是基于通信网络协议为对方提供数据交换的全部过程。

Java-465端口邮件发送

Java-465端口邮件发送

Java-465端⼝邮件发送阿⾥云25端⼝默认情况下不可⽤,官⽅解释如下:相关说明:发邮件请使⽤外部邮件服务商的465端⼝或云邮产品。

若有特殊场景,需要从云主机对外连接TCP25端⼝,请提交“25端⼝解封申请”。

提交申请后,需要1个⼯作⽇完成审核,审核结果将邮件通知您。

可以使⽤465端⼝发送邮件代码private static final String MAIL_HOST_VALUE =""; //发送邮件的服务器地址private static final String MAIL_FROM ="xxxxxx";//邮件发送⼈private static final String MAIL_FROM_PASSWORD ="xxxxxx";//邮件发送⼈授权码(不是邮箱密码)private static final String MAIL_SUBJECT_VERIFY_CODE ="xxx⽹【邮箱验证码】";//主题private static final String MAIL_ORGANIZATION ="xxx⽹";//组织public static void Main(String args[]){sendMail("xxx@",MAIL_FROM,MAIL_SUBJECT_VERIFY_CODE,"邮件内容",null))}/*** @Param to 接收者* @Param cc 发送者* @Param subject 主题* @Param content 内容* @Param fileList 附件* */public static boolean sendMail(String to, String cc, String subject, String content, String[] fileList){try {Security.addProvider(new .ssl.internal.ssl.Provider());final String SSL_FACTORY = ".ssl.SSLSocketFactory";final Properties p = System.getProperties() ;p.setProperty("mail.smtp.host", MAIL_HOST_VALUE);p.setProperty("mail.smtp.auth", "true");p.setProperty("er", MAIL_FROM);p.setProperty("mail.smtp.pass", MAIL_FROM_PASSWORD);p.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);p.setProperty("mail.smtp.socketFactory.fallback", "false");p.setProperty("mail.smtp.port", "465");p.setProperty("mail.smtp.socketFactory.port", "465");// 根据邮件会话属性和密码验证器构造⼀个发送邮件的sessionSession session = Session.getInstance(p, new Authenticator(){protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(p.getProperty("er"),p.getProperty("mail.smtp.pass")); }});session.setDebug(true);Message message = new MimeMessage(session);//消息发送的主题message.setSubject(subject);//接受消息的⼈message.setReplyTo(InternetAddress.parse(MAIL_FROM));//消息的发送者message.setFrom(new InternetAddress(p.getProperty("er"),"新乡学院失物招领⽹"));// 创建邮件的接收者地址,并设置到邮件消息中String[] split = to.split(",");InternetAddress []tos = new InternetAddress[split.length];for (int i = 0; i < split.length; i++) {tos[i]=new InternetAddress(split[i]);}// 设置抄送⼈if (cc != null && cc.length() > 0) {message.setRecipients(, InternetAddress.parse(cc));}message.setRecipients(Message.RecipientType.TO, tos);// 消息发送的时间message.setSentDate(new Date());Multipart mainPart = new MimeMultipart();// 创建⼀个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(content, "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容message.setContent(mainPart);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {html = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]);html.setDataHandler(new DataHandler(fds));html.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B")); mainPart.addBodyPart(html);}}message.setContent(mainPart);message.saveChanges();Transport.send(message);} catch (MessagingException e) {e.printStackTrace();return false;} catch (UnsupportedEncodingException e) {e.printStackTrace();return false;}return true;}code By。

javaMail发送邮件(图片,附件)

javaMail发送邮件(图片,附件)

Java类库中是带有javamail的!所有不需要再下载。

1)运行例子时会出现:Exception in thread "main" ng.NoClassDefFoundError: com/sun/mail/util/LineOutputStream这样的错误,原因是版本不兼容,后来我没有用java ee 5.0而是用j2ee1.4.自己导入mail.jar包就没有出现错误。

2)运行完书本的例子(文本,包含有图片,附件。

另外图片是分为两种,一是引用外部资源,二是嵌入内部)。

对其有个大概的了解。

下面给个完整的例子,包含有图片和附件的。

public class ComplexMessage {/***@param args*@throws MessagingException*@throws AddressException*@throws IOException*@throws FileNotFoundException*/public static void main(String[] args) throws AddressException,MessagingException, FileNotFoundException, IOException{// TODO Auto-generated method stubSession session = Session.getDefaultInstance(new Properties()); // 设置发送邮件的客户端服务器端环境MimeMessage message=createMessage( session);message.writeTo(new FileOutputStream("d:\\test3.eml"));}public static MimeMessage createMessage(Session session) throws AddressException, MessagingException{String from = "4054702459047@";String to = "4074505429047@";String subject = "test";String data = "<FONT face=宋体color=#0909f7 size=7><SPAN style='ACKGROUND-COLOR: #6911ee'><SPAN style='BACKGROUND-COLOR: #000000'><SPAN style='BACKGROUND-COLOR: #000000'><SPAN style='BACKGROUND-COLOR: #ffffff'><EM>华南理工大学</EM> </SPAN></SPAN></SPAN></SPAN></FONT>"+"<img src='cid:test1.jpg'>";Message message = new MimeMessage(session);// 创建MimeMessage实例对象message.setFrom(new InternetAddress(from));message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));message.setSentDate(new Date());message.setSubject(subject);MimeBodyPart contentPart=createContent(data,"d:\\test.jpg");MimeBodyPart attachPart1=createAttachment("d:\\xml.xml");MimeBodyPart attachPart2=createAttachment("d:\\report13.jasper");MimeMultipart multipart=new MimeMultipart("mixed");multipart.addBodyPart(contentPart);multipart.addBodyPart(attachPart1);multipart.addBodyPart(attachPart2);//这里MimeMessage是由MIME对象的消息头和MimeMultipart组成,而MimeMultipart可由//MimeBodyPart 组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文介绍了如何利用Java的网络API来实现一个电子邮件工具程序。

通常Email工具都是使用SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)来发送邮件,使用POP3协议来接受电子邮件。

在本文中只对这两个协议作简单介绍。

如果有兴趣的读者可以参考以下站点:POP3: ftp:///in-notes/rfc1939.txtSMTP: ftp:///in-notes/rfc2821.txtJava中虽然提供了JavaMail API,但是由于在这篇文章中我将从底层来探讨电子邮件软件是如何工作的,因此不会使用JavaMail API。

本文中的例子是在J2SE 1.4下开发的。

电子邮件的格式在开发Email软件之前,你需要了解电子邮件的格式。

根据RFC 2882(/rfcs/rfc2822.html)的规定,电子邮件由很多行组成,每行由〈CRLF〉(ASCII代码13和ASCII代码10)结束。

每行的最大长度为998个字符。

其中有些行提供了收发电子邮件所必需的信息,这些行被称为头(Header),所有的头构成了头域(Header Field)。

其他的行用于保存邮件的具体内容。

头域提供了很多信息,其中包括邮件的来源;邮件的目的地和邮件的主题等。

每个头由名称和冒号加上相应的值构成。

例如From:、Send:和Reply-To:中记录了邮件的来源。

在From:中记录的是邮件的作者;在Sender:中指定了发送邮件的代理(可以是邮件地址,也可以是机器名称);Reply-To:中指定了接受回信的邮箱地址。

一封邮件可能有多个作者,因此From:中可以指定一个或多个邮箱地址。

下面给出了一个个From:的例子:From: Ray Feng 〈rayfeng@〉, bogus@在一封电子邮件中只能有一个Sender。

因此Sender:的值只能包含一个邮箱地址。

如果在From:中只有一个作者,而且Sender:的值和From:的值相同,则Sender:就不会出现在电子邮件中,否则会出现信息冗余;反之Sender:则应该出现在邮件中。

下面是一个Sender:的例子:Sender: Ray Feng rayfeng@在电子邮件中可以指定将回信发送到多个邮箱地址中。

因此Reply-To:中可以包含一个或多个邮箱地址,每个地址之间用逗号隔开。

如果邮件中有Reply-To:,回信会被发送到罗列在Reply-To:中的所有地址;如果邮件中没有Reply-To:,则回信会被发送到罗列在From:中的地址。

那么谁会收到邮件呢?To:和Cc:中保存了接受邮件的邮箱地址。

两者的值都可以包含多个邮箱地址。

除了邮件的来源和接受者,RFC 2882中还定义了其他一些头,例如Subject:中包含了电子邮件的主题。

下面是一个电子邮件头域的例子:From:Ray Feng 〈rayfeng@〉To: bogus 〈bogus@〉Cc: John 〈John@〉Subject: Test Email附件在MIME中允许在电子邮件中添加二进制文件,被添加的文件叫做附件。

附件的内容可以作为邮件的一部分进行传输。

MIME是如果实现这个功能的呢?在MIME中引入了很多头,其中和附件相关的最重要的就是Content-Type:和Content-Tracnsfer-Encoding:。

为了在一封电子邮件中区分不同的部分,MIME要求在Content-Type: multipart/mixed头中包含一个边界参数。

边界参数的值是一个在双引号中的字符串。

通过这个字符串,程序就可以区分电子邮件的不同部分。

在传输电子邮件的内容前,程序先传输一个〈CRLF〉,两个连字符和边界参数。

当完成Email内容的传输后,程序会在最后传输边界参数和两个连字符。

下面的电子邮件中包含了两个部分,一个部分是由iso-8859-1字符组成的文本,一部分是名为file.txt的附件。

这里没有包含Content-Transfer-Encoding:头,表明使用缺省的7位ASCII 字符。

Content-Type: multipart/mixed; boundary="***"--***Content-Type: text/plain; charset="iso-8859-1"This message has an attachment.--***Content-Type: text/plain; name="file.txt"Attachment text.--***--发送电子邮件screen.width-333)this.width=screen.width-333;">基于互联网的电子邮件通常是利用SMTP网络协议进行传输的。

根据SMTP,当电子邮件程序需要发送电子邮件时,该程序首先同一个SMTP服务程序建立起双向的通讯通道(通常是通过套接字建立这种通道的)。

这个基本的SMTP服务程序或许是这份电子邮件的最终目的地,也可能只是通向另一个SMTP服务程序的跳板。

总而言之,当电子邮件程序同SMTP 服务程序建立起双相的传输通道后,电子邮件程序会向SMTP服务程序发送一系列基于ASCII字符的命令,而SMTP服务程序会对这些命令产生相应的回应来表明相应的操作是成功还是失败了。

让我们假设所有的操作都成功了,那么电子邮件程序将把邮件发送到SMTP服务程序,如果电子邮件的接收地址正好是该SMTP服务程序运行的服务器,那么SMTP服务程序就会将邮件加入邮件数据库中,否则SMTP服务程序将把邮件转发到在其他SMTP服务器上的SMTP服务程序,直到到达目的地为止。

图二通过图示说明了这一点。

SMTP可以识别很多电子邮件用来与SMTP服务程序通讯的命令。

某些命令需要参数,某些命令则不需要。

但是每个命令后必须跟一个〈CRLF〉。

最常用的六个命令是HELO,MAIL,RCPT,DATA,RSET和QUIT。

按照上面的顺序给出这六个命令并非偶然。

除了RSET外,其他的命令必须按照特定的顺序发送,这是因为SMTP服务程序是基于状态的。

对于每一个建立了双向通讯通道的电子邮件程序,SMTP服务程序都会保存当前的通讯状态。

当一个电子邮件程序和SMTP服务程序建立联系后,SMTP服务程序将向电子邮件程序发送初始化消息。

该消息包含了一个三位回应码,这个回应码是用来标识SMTP服务程序的。

除此之外,在SMTP服务程序发送给电子邮件程序的消息的头部也带有回应码,它们被用来表示操作成功或者失败。

电子邮件程序接收到这些回应码后,可以根据其中包含的信息完成相应的工作。

而消息的文本部分是给人看的,电子邮件程序可以忽略文本部分。

在收到初始化消息后,电子邮件程序通过发送HELO命令来开始传输邮件。

HELO命令有一个参数,该参数标志了SMTP服务程序所在服务器的域名。

它将在SMTP服务程序中标识出SMTP服务程序。

作为回应,SMTP服务程序进行一些初始化工作,将自己设定到初始状态以接收电子邮件。

当这些工作成功完成后,它发送回一条成功的回应消息给电子邮件程序,该回应消息以回应码250开头。

在HELO命令之后,电子邮件程序会发送MAIL命令。

MAIL命令将在SMTP服务程序中标识出发送者,它有两个参数:FROM:和一个电子邮件地址。

如果SMTP服务程序能够成功地解析电子邮件地址的话,通常它将返回以250开头的回应消息;否者将发送回表示操作失败的回应消息。

在MAIL之后是RCPT命令。

RCPT命令在SMTP服务程序中标识出一个邮件的接收者,它也有两个参数:TO:和一个电子邮件地址。

如果邮件由多个接收者,则程序需要多次发送RCPT命令。

RCPT命令之后,程序需要发送电子邮件本身了。

程序先发送一个DA TA命令,当接收到表示成功的回应消息后,将电子邮件逐行发送给SMTP服务程序,当所有的行都发送完毕后,程序发送一行由句号组成的行。

在此之后,电子邮件程序等待SMTP服务程序的回应消息,以确定邮件被SMTP服务程序正常接收了。

这一切都成功后,程序可以发送RSET命令来退出邮件传输过程。

最后,当要断开和SMPT服务程序建立的连接时,程序发送QUIT命令。

主要提醒的一点是,虽然上面的命令都是大写的,但是在实际的协议对大小写不敏感。

现在也许你关心的问题是回应码的格式是怎样的。

最左边的一位数字代表操作是否成功,1代表收到命令,2代表操作成功完成,3代表等待后续命令,4代表操作临时未能完成(电子邮件程序可以在当前的邮件传输过程中重新发送命令),5代表操作不能完成(电子邮件程序不能在当前的邮件传输过程中重新发送命令)。

第二位数字代表回应的领域,0代表语法错误,1代表消息请求,2代表传输通道,3和4没有指定,5代表与邮件系统相关。

最有一位数字对第二位数字做补充说明,这里就不再详述。

根据上面的信息,我们可以看出250代表请求的命令已经成功完成;220代表SMTP服务程序正在等待HELO命令;而503代表命令顺序错误。

有兴趣的朋友可以参见RFC 2821。

下面提供了一个基于命令行的例子SMTPDemo,这个例子可以帮助你理解基于SMTP的邮件传输机制。

这个程序将利用标准端口25连接到一个SMTP服务程序上。

为了使程序能够运行,你需要将home更改为你使用的邮件服务器的地址。

// SMTPDemo.javaimport java.io.*;import .*;class SMTPDemo{public static void main (String [] args){String SMTPServer = "homeint SMTPPort = 25;Socket client = null;try{// 向SMTP服务程序建立一个套接字连接。

client = new Socket (SMTPServer, SMTPPort);// 创建一个BufferedReader对象,以便从命令行读取用户输入。

BufferedReader stdin;stdin = new BufferedReader (new InputStreamReader (System.in));// 创建一个BufferedReader对象,以便从套接字读取输出。

InputStream is = client.getInputStream ();BufferedReader sockin;sockin = new BufferedReader (new InputStreamReader (is));// 创建一个PrintWriter对象,以便向套接字写入内容。

相关文档
最新文档