java邮件发送
java 邮件发送失败处理方案
java 邮件发送失败处理方案作为一名职业写手,我将为您详细阐述Java邮件发送失败的处理方案。
在实际应用中,邮件发送失败可能会给工作和生活带来诸多不便。
以下我们将分析失败原因及相应的解决方案,帮助您轻松应对邮件发送问题。
一、问题概述邮件发送失败,通常表现为邮件无法送达收件人手中。
这种情况可能是由多种原因导致的,我们需要针对具体原因进行排查和处理。
二、失败原因分析1.邮件服务器问题:邮件服务器出现故障或维护,可能导致邮件发送失败。
2.网络连接问题:网络不稳定或连接中断,会影响邮件的正常发送。
3.邮件账号问题:发件人或收件人的邮件账号设置有误,如密码错误、邮箱空间不足等。
4.邮件内容问题:邮件中含有敏感词汇或超大附件,可能导致邮件被拦截或拒绝。
5.发送频率问题:短时间内发送大量邮件,可能会触发邮件服务器的防垃圾邮件机制,导致发送失败。
三、解决方案1.检查邮件服务器:确认邮件服务器是否正常运行,如有问题,等待服务器恢复正常或联系运维人员进行处理。
2.检查网络连接:确保网络稳定且连接正常,修复网络故障。
3.检查邮件账号信息:核实发件人及收件人的邮件账号、密码等信息是否正确,清理邮箱空间,确保邮箱正常使用。
4.优化邮件内容:避免使用敏感词汇,减小附件大小,保证邮件内容合规。
5.调整发送频率:避免短时间内大量发送邮件,可采用批量发送或分批发送的方式。
6.使用第三方邮件发送服务:考虑使用第三方邮件发送平台,如SendGrid、Mailgun等,提高邮件发送成功率。
四、失败处理流程当发现邮件发送失败时,请按照以下流程进行处理:1.分析失败原因:根据错误提示或邮件服务器日志,初步判断失败原因。
2.排查问题:针对原因进行分析,逐一排查相关因素。
3.解决问题:找到问题后,及时采取相应措施进行解决。
4.测试发送:解决问题后,重新发送邮件并观察发送结果。
5.优化方案:总结失败经验,优化邮件发送方案,预防类似问题再次发生。
Java实现outlook服务的邮件发送
Java实现outlook服务的邮件发送依赖<!-- https:///artifact/javax.mail/mail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>POP3接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receivepop3Email() {String host = "";// change accordinglyString mailStoreType = "pop3";String popPort = "995";Store store = null;// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.pop3.host", host);properties.put("mail.pop3.port", popPort);properties.put("mail.pop3.starttls.enable", "true");try {Session emailSession = Session.getDefaultInstance(properties);//打开调式模式,可看到邮件发送过程中各步骤的详细信息// emailSession.setDebug(true);store = emailSession.getStore("pop3s");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}finally {if(null != store){try {store.close();} catch (MessagingException e) {e.printStackTrace();}}}}IMAP接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receiveimapEmail() {String host = "";// change accordinglyString mailStoreType = "imap";String popPort = "993";try {// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.imap.host", host);properties.put("mail.imap.port", popPort);properties.put("mail.imap.starttls.enable", "true");Session emailSession = Session.getDefaultInstance(properties);// emailSession.setDebug(true);Store store = emailSession.getStore("imaps");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}}SMTP发送static String USER_NAME ="****@";static String PASSWORD = "****";public static boolean sendSMTPMail(String to, String text, String title) {String host = "";String mailStoreType = "smtp";String popPort = "587";final Properties props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", host);props.put("mail.store.protocol", mailStoreType);props.put( "mail.smtp.port", popPort );//开启SSLprops.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.socketFactory.port",popPort);props.put("mail.smtp.socketFactory.fallback","false");try {Session session = Session.getDefaultInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(USER_NAME, PASSWORD);//账号密码}});session.setDebug(true);// 创建邮件消息MimeMessage message = new MimeMessage(session);// 设置发件⼈InternetAddress form = new InternetAddress(USER_NAME);message.setFrom(form);// 设置收件⼈InternetAddress toAddress = new InternetAddress(to);message.setRecipient(Message.RecipientType.TO, toAddress);// 设置邮件标题message.setSubject(title);// 设置邮件的内容体message.setContent(text, "text/html;charset=UTF-8");// 发送邮件Transport.send(message);return true;} catch (Exception e) {e.printStackTrace();}return false;}插曲: SMTP发送邮件时,第⼀次发送可能会收到如下的报错:OutboundSpamException; Failed to process message due to a permanent exception with message WASCL UserAction verdict is not None 在⽹上查到这是邮箱⼚商的安全策略,出现此异常的同时⼚商会给你发送⼀封确认邮件,只要你登录邮箱并激活该邮件即可使⽤SMTP 发送邮件的功能,邮件内容⼤致如下:。
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,新浪邮箱服务器) 加油加油。
--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实现发送邮件,图⽚,附件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发送短信和邮件(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邮件发送功能实现详解:SMTP协议与JavaMail API
Java邮件发送功能实现详解:SMTP协议与JavaMail API简介在现代社会中,电子邮件已经成为人们日常沟通的重要方式之一。
而在Java编程领域,实现邮件发送功能同样是一项重要的任务。
通过SMTP协议和JavaMail API,我们可以很方便地在Java程序中实现邮件发送功能。
本文将详细介绍如何使用SMTP协议和JavaMail API在Java程序中实现邮件发送功能。
SMTP协议SMTP(Simple Mail Transfer Protocol)是用于邮件传输的协议,它定义了邮件是如何从发件人传送到收件人的过程。
在使用Java实现邮件发送功能时,我们需要理解SMTP协议的工作原理,并按照协议规范来构建和发送邮件。
SMTP协议的工作流程通常包括以下步骤:1. 发件人向SMTP服务器发送邮件;2. SMTP服务器根据收件人的域名查找目标邮件服务器;3. SMTP服务器将邮件传递给目标邮件服务器; 4. 目标邮件服务器将邮件存储在收件人的邮箱中。
JavaMail APIJavaMail API是一组用于处理电子邮件的Java类库,它提供了发送、接收和处理邮件的功能。
通过JavaMail API,我们可以方便地在Java程序中实现各种邮件相关操作,包括发送邮件、接收邮件、附件处理等。
在使用JavaMail API发送邮件时,一般需要按照以下步骤进行: 1. 创建一个邮件会话(Session)对象; 2. 创建一个邮件(Message)对象,并设置发件人、收件人、主题、内容等信息; 3. 创建一个邮件传输(Transport)对象,并连接到SMTP服务器; 4. 发送邮件并关闭连接。
实现Java邮件发送功能下面将以一个简单的示例来演示如何在Java程序中实现邮件发送功能。
假设我们要发送一封包含文本内容的简单邮件。
```java import java.util.Properties; import javax.mail.; import javax.mail.internet.;public class SendEmail { public static void main(String[] args) { final String username =。
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附件) 直接上代码保存吧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发送邮件及邮 件附件代码实例
Mail attachment = partSet.get(i);
String attachmentContent = attachment.getContent();
if (null != attachmentContent && 0 < attachmentContent.length()) {
*中查找其相应的MIME类型,如果没找到,则返回
* {@link #defaultAttachmentContentType}
*所指定的默认类型。
*
* @param fileName
*文件名
* @return返回文件对应的MIME类型。
*/
private String getPartContentType(String fileName) {
}
ret = contentTypeMap.get(fileName);
}
if (null == ret) {
ret = defaultAttachmentContentType;
}
return ret;
}
/**
*将给定字符串转换为base64编码的字符串
*
* @param str
*需要转码的字符串
contentTypeMap.put("doc", "application/msword");
contentTypeMap.put("dot", "application/msword");
contentTypeMap.put("docx", "application/msword");
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例子引言概述:在当今数字化时代,电子邮件成为了人们日常沟通的重要工具。
为了满足不同需求,许多开发者使用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,并将电子邮件的内容作为请求的正文发送。
JSP 通过Java Mail组件发送E-mail
JSP 通过Java Mail组件发送E-mail
Java Mail组件最常用的功能就是实现发送E-mail。
本节将通过一个具体的实例介绍应用Java Mail组件发送E-mail的方法。
下面是一个发送E-mail实例,代码如下所示。
发送Email页面email.htm
上述代码主要实现的功能是:提供表单,让用户选择要发送的邮件地址、主题和邮件内容,单击"发送"按钮执行发送邮件操作。
执行上述代码,在浏览器中输入
地址“http://wxb:8080/JSP/email.htm”,结果如图8-1所示。
图8-1 发送Email页面
上述代码中,主要实现的功能是对邮件进行处理。
首先使用request内置对象接收email.htm页面提交的数据。
然后声明一个Properties对象设置发件人用到的邮件服务器并用session对象进行引用。
最后声明一个MimeMessage对象设置要发送邮件的主题、内容并使用Transport类的sendMessage()方法发送邮件。
执行上述代码,结果如图8-2所示。
图8-2 执行结果。
javamailsenderimpl 协议
很高兴能为您撰写一篇关于“javamailsenderimpl协议”的高质量文章。
在撰写之前,我会先对这个主题进行充分的评估,确保文章能够深入探讨并全面解释相关内容。
1. 该协议的基本概念和原理javamailsenderimpl协议是一种用于在Java中发送电流信箱的协议,它基于JavaMail API实现了邮件的发送和接收功能。
通过jvamailsenderimpl协议,开发人员可以使用Java程序来发送邮件,实现了邮件发送的自动化和定制化。
2. 该协议的使用和应用场景javamailsenderimpl协议通常在Web应用程序中广泛使用,特别是那些需要发送邮件的场景,比如注册、通知、验证等。
通过该协议,开发人员可以轻松地集成邮件发送功能到他们的应用程序中,并且可以进行高度定制化,满足各种业务需求。
3. 个人观点和理解我个人认为javamailsenderimpl协议在邮件发送领域发挥了非常重要的作用,它简化了邮件发送的流程,提高了开发效率。
而且,由于可以通过Java程序来控制邮件的发送过程,因此也提供了更多的个性化定制选项。
在实际的项目中,我曾经使用过该协议来实现邮件发送功能,深刻体会到了它的便利性和可靠性。
4. 总结javamailsenderimpl协议是一种能够在Java应用程序中方便地实现邮件发送功能的协议,它的使用和应用场景非常广泛,能够很好地满足各种邮件发送需求。
通过该协议,开发人员可以轻松地集成邮件发送功能到他们的应用程序中,并且可以进行高度定制化,满足各种业务需求。
以上是一些初步的观点和思路,接下来我会根据这些内容进一步撰写并完善文章,以确保文章的深度和广度兼具。
希望能为您撰写一篇满意的高质量文章!javamailsenderimpl协议是一个用于在Java应用程序中发送电流信箱的协议,它基于JavaMail API实现了邮件的发送和接收功能。
JavaMail API是一个用于处理电流信箱的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收取和发送邮件 ssl
Java 收取和发送邮件+SSL这里使用Gmail 邮箱测试1. 收取邮件[java] view plaincopypackage lius.javamail.ssl; import java.io.UnsupportedEncodingException; importjava.security.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; /** * 用于收取Gmail邮件* @author Winter Lau */ public class GmailFetch { public static void main(Stringargv[]) throws Exception { Security.addProvider(new .ssl.internal.ssl.Provider()); final String SSL_FACTORY = ".ssl.SSLSocketFactory";// Get a Properties object Properties props = System.getProperties();props.setProperty("mail.pop3.socketFactory.class",SSL_FACTORY);props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995"); //以下步骤跟一般的JavaMail操作相同Session session = Session.getDefaultInstance(props,null); //请将红色部分对应替换成你的邮箱帐号和密码URLName urln = newURLName("pop3","",995,null, "邮箱帐号", "邮箱密码"); Store store =session.getStore(urln); Folder inbox = null; try { store.connect(); inbox =store.getFolder("INBOX");inbox.open(Folder.READ_ONLY); FetchProfile profile = new FetchProfile();profile.add(FetchProfile.Item.ENVELOPE);Message[] messages = inbox.getMessages();inbox.fetch(messages, profile); System.out.println("收件箱的邮件数:" + messages.length); for (int i = 0;i < messages.length; i++) { //邮件发送者String from =decodeText(messages[i].getFrom()[0].toString()); InternetAddress ia = new InternetAddress(from); System.out.println("FROM:" +ia.getPersonal()+'('+ia.getAddress()+')'); //邮件标题System.out.println("TITLE:" +messages[i].getSubject()); //邮件大小System.out.println("SIZE:" + messages[i].getSize());//邮件发送时间System.out.println("DATE:" + messages[i].getSentDate()); } } finally{ try { inbox.close(false); } catch (Exception e) {} try { store.close(); } catch (Exception e) {} } } protected static String decodeText(String text) throws UnsupportedEncodingException { if (text == null) return null; if (text.startsWith("=?GB") ||text.startsWith("=?gb")) text =MimeUtility.decodeText(text); else text = new String(text.getBytes("ISO8859_1")); returntext; } }2.发送邮件[java] view plaincopypackage lius.javamail.ssl; import java.security.Security; import java.util.Date; import java.util.Properties; importjavax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; importjavax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; importjavax.mail.internet.MimeMessage; /** * 使用Gmail 发送邮件* @author Winter Lau */ public class GmailSender { public static void main(String[] args) throws AddressException, MessagingException{ Security.addProvider(new.ssl.internal.ssl.Provider()); final String SSL_FACTORY = ".ssl.SSLSocketFactory";// Get a Properties object Properties props = System.getProperties();props.setProperty("mail.smtp.host", ""); props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "465"); props.setProperty("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.auth", "true"); final String username = "邮箱帐号"; final String password = "邮箱密码"; Session session =Session.getDefaultInstance(props, newAuthenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return newPasswordAuthentication(username,password); }}); // -- Create a new message -- Message msg = newMimeMessage(session); // -- Set the FROM and TO fields -- msg.setFrom(newInternetAddress(username + "@"));msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[收件人地址]",false));msg.setSubject("Hello"); msg.setText("How are you"); msg.setSentDate(new Date());Transport.send(msg); System.out.println("Message sent."); } }现在发送邮件时会发生异常信息,如下:.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatorg.springframework.mail.javamail.JavaMailSenderImpl.do Send(JavaMailSenderImpl.java:419)atorg.springframework.mail.javamail.JavaMailSenderImpl.se nd(JavaMailSenderImpl.java:342)Caused by: javax.mail.MessagingException: Exception reading response;nested exception is:.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatcom.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)atcom.sun.mail.smtp.SMTPTransport.openServer(SMTPTra nsport.java:1260)... 4 moreCaused by: .ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetat.ssl.internal.ssl.Alerts.getSSLException(Alerts. java:174)at.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSock etImpl.java:1611)at.ssl.internal.ssl.Handshaker.fatalSE(Handsha ker.java:187)... 8 moreCaused by: sun.security.validator.ValidatorException: PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatsun.security.validator.PKIXValidator.doBuild(PKIXValidato r.java:285)atsun.security.validator.PKIXValidator.engineValidate(PKIX Validator.java:191)atsun.security.validator.Validator.validate(Validator.java:218 )at.ssl.internal.ssl.X509TrustManagerImpl.validat e(X509TrustManagerImpl.java:126)at.ssl.internal.ssl.X509TrustManagerImpl.check ServerTrusted(X509TrustManagerImpl.java:209)... 20 moreCaused by:sun.security.provider.certpath.SunCertPathBuilderExcepti on: unable to find valid certification path to requested targetatsun.security.provider.certpath.SunCertPathBuilder.engine Build(SunCertPathBuilder.java:174)atjava.security.cert.CertPathBuilder.build(CertPathBuilder.ja va:238)atsun.security.validator.PKIXValidator.doBuild(PKIXValidato r.java:280)... 26 more原因是需要保存安装证书官方的QA/products/javamail/FAQ.html#installcertQ: When connecting to my mail server over SSL I get an exception like "unable to find valid certification path to requested target".A: Your server is probably using a test certificate or self-signed certificate instead of a certificate signed by a commercial Certificate Authority. You'll need to install the server's certificate into your trust store. TheInstallCert program will help.使用DOS命令进入InstallCert.java 存放目录运行javac InstallCert.java 将InstallCert.java 编译成 .class文件在运行java InstallCert :465【其中xyz是要使用的mail,例如:】【465是端口号】得到jssecacerts文件后复制到jdk1.6.0_14\jre\lib\security 目录然后再发送邮件就OK了代码都是测试过的,运行没问题。
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 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-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发送邮件(图片,附件)
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(props == null)props = System.getProperties(); //获得系统属性对象
props.put("mail.smtp.host",hostName); //设置SMTP主机
public class SendMailAgent {
private MimeMessage mimeMsg; //MIME邮件对象
private Session session; //邮件会话对象
private Properties props; //系统属性
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto)
// username = name;
// password = pass;
// }
/**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) {
//System.out.println("增加邮件附件:"+filename);
Session mailSession = Session.getInstance(props,null);
private String password = constantVar.EMAIL_PASSWORD;
private String from = constantVar.EMAIL_MANAGER;
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
}else{
props.put("mail.smtp.auth","false");
}
}
/**
* @param name String
* @param pass String
*/
// public void setNamePass(String name,String pass) {
catch(Excintln("创建MIME邮件对象失败!"+e);
return false;
}
}
/**
* @param need boolean
}
/**
* @return boolean
*/
public boolean createMimeMessage()
{
try{
//System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props,null); //获得邮件会话对象
}
catch(Exception e){
//System.err.println("获取邮件会话对象时发生错误!"+e);
return false;
}
//System.out.println("准备创建MIME邮件对象!");
return true;
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
try{
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();
return true;
}
//System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);
if(props == null)props = System.getProperties();
if(need){
props.put("mail.smtp.auth","true");
return true;
}
catch(Exception e){
//System.err.println("设置邮件正文时发生错误!"+e);
return false;
}
}
/**
public boolean sendout()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
//System.out.println("正在发送邮件....");
private boolean needAuth = true; //smtp是否需要认证
private String hostName = constantVar.EMAIL_SERVER;
private String username = constantVar.EMAIL_ACCOUNT; //smtp认证用户名和密码
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
}
catch(Exception e){
//System.err.println("增加邮件附件:"+filename+"发生错误!"+e);
try{
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312");
mp.addBodyPart(bp);
return false;
}
}
/**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try{
BodyPart bp = new MimeBodyPart();
//String from= mailServer.getEMAIL_MANAGER();
try{
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
return true;
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
public boolean setTo(String to){
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean setFrom( ) {
//System.out.println("设置发信人!");
//System.out.println(hostName);
setSmtpHost();
createMimeMessage();
}
/**
* @param hostName String
*/
public void setSmtpHost( ) {
//System.out.println("设置邮件主题!");
try{
mimeMsg.setSubject(mailSubject);
return true;
}
catch(Exception e) {
//System.err.println("设置邮件主题发生错误!");
*/
public void setNeedAuth(boolean need) {
// new javax.mail.PasswordAuthentication("","");
//SmtpAuthenticator sa=new SmtpAuthenticator();