使用javamail发送邮件(文本+附件)
2017-06-28 20:03
405 查看
java发动邮件其实很简单,这是使用Javamail来实现,使用maven管理
1.导包:这两个包缺一不可
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
2.如果不想用现成的邮箱,比如163,139等,可以自己搭建smtp邮件服务器。但是这里使用163邮箱来实现,但163邮箱要开启smtp(登陆邮箱设置就可以)
3.源代码:需要的参数是:发送地址,开启smtp的时候设置的密码,smtp端口,目的地址,邮件的主题,邮件内容,附件的地址
public static void sendMsg(String fromAddress,String fromAddresspwd,String host,
String toAddress,String subject,String content,String filepath) throws Exception{
// 用于连接邮件服务器的参数配置
Properties props = new Properties();
//发送邮件的服务器地址
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol","smtp");
props.put("mail.debug", "true");
//创建Session对象
Session session =Session.getInstance(props);
//创建出MimeMessage,邮件的消息对象
MimeMessage message = new MimeMessage(session);
//设置发件人
Address fromAddr = new InternetAddress(fromAddress,"每日执法信息导出小助手");
message.setFrom(fromAddr);
//设置收件人
Address toAddr=new InternetAddress(toAddress,"无敌小神童");
message.setRecipient(RecipientType.TO, toAddr);
//设置邮件的主题
message.setSubject(subject,"UTF-8");
//设置文本节点
MimeBodyPart text=new MimeBodyPart();
text.setContent(content,"text/html;charset=UTF-8");
//创建附件节点
MimeBodyPart attachment=new MimeBodyPart();
DataHandler dataHandler=new DataHandler(new FileDataSource(filepath));// 读取本地文件
attachment.setDataHandler(dataHandler);// 将附件数据添加到“节点”
attachment.setFileName(MimeUtility.encodeText(dataHandler.getName()));// 设置附件的文件名(需要编码)
//设置文本和图片的关系
MimeMultipart mimeMultipart=new MimeMultipart();
mimeMultipart.addBodyPart(text);
mimeMultipart.addBodyPart(attachment);
mimeMultipart.setSubType("mixed");
//设置邮件的正文
message.setContent(mimeMultipart);
//用于连接邮件服务器的参数配置
message.setSentDate(new Date());
message.saveChanges();//保存更新
//根据 Session 获取邮件传输对象
Transport transport = session.getTransport("smtp");
transport.connect(host,fromAddress,fromAddresspwd); //设置了邮件的发射地址
//发送邮件到收件地址
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
4.在程序入口调用即可。本代码可以用作工具方法
1.导包:这两个包缺一不可
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
2.如果不想用现成的邮箱,比如163,139等,可以自己搭建smtp邮件服务器。但是这里使用163邮箱来实现,但163邮箱要开启smtp(登陆邮箱设置就可以)
3.源代码:需要的参数是:发送地址,开启smtp的时候设置的密码,smtp端口,目的地址,邮件的主题,邮件内容,附件的地址
public static void sendMsg(String fromAddress,String fromAddresspwd,String host,
String toAddress,String subject,String content,String filepath) throws Exception{
// 用于连接邮件服务器的参数配置
Properties props = new Properties();
//发送邮件的服务器地址
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol","smtp");
props.put("mail.debug", "true");
//创建Session对象
Session session =Session.getInstance(props);
//创建出MimeMessage,邮件的消息对象
MimeMessage message = new MimeMessage(session);
//设置发件人
Address fromAddr = new InternetAddress(fromAddress,"每日执法信息导出小助手");
message.setFrom(fromAddr);
//设置收件人
Address toAddr=new InternetAddress(toAddress,"无敌小神童");
message.setRecipient(RecipientType.TO, toAddr);
//设置邮件的主题
message.setSubject(subject,"UTF-8");
//设置文本节点
MimeBodyPart text=new MimeBodyPart();
text.setContent(content,"text/html;charset=UTF-8");
//创建附件节点
MimeBodyPart attachment=new MimeBodyPart();
DataHandler dataHandler=new DataHandler(new FileDataSource(filepath));// 读取本地文件
attachment.setDataHandler(dataHandler);// 将附件数据添加到“节点”
attachment.setFileName(MimeUtility.encodeText(dataHandler.getName()));// 设置附件的文件名(需要编码)
//设置文本和图片的关系
MimeMultipart mimeMultipart=new MimeMultipart();
mimeMultipart.addBodyPart(text);
mimeMultipart.addBodyPart(attachment);
mimeMultipart.setSubType("mixed");
//设置邮件的正文
message.setContent(mimeMultipart);
//用于连接邮件服务器的参数配置
message.setSentDate(new Date());
message.saveChanges();//保存更新
//根据 Session 获取邮件传输对象
Transport transport = session.getTransport("smtp");
transport.connect(host,fromAddress,fromAddresspwd); //设置了邮件的发射地址
//发送邮件到收件地址
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
4.在程序入口调用即可。本代码可以用作工具方法
相关文章推荐
- 使用javaMail发送文本邮件和带附件邮件以及android后台发送邮件
- 使用javaMail发送复杂邮件,支持附件发送
- 使用javaMail发送复杂邮件,支持附件发送
- android使用javamail发送邮件(支持多附件发送 )
- JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件)
- Java程序中使用JavaMail发送带图片和附件的邮件
- Android 使用javaMail jar包发送邮件到指定邮箱,并可以发送图片附件
- 使用javamail发送带附件的邮件
- 使用javaMail发送复杂邮件,支持附件发送
- 使用javamail发送带附件的邮件
- javamail发送复杂邮件(包含文本、图片、附件)
- Linux中使用crontab发送邮件,电子邮件文本转到一个名为ATT00001.bin的附件文件的解决方案
- android中使用javamail发送邮件附件
- 使用JavaMail发送邮件之发送带附件邮件二
- 使用javamail实现发送简单邮件和带有附件的邮件
- python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件
- 使用JavaMail发送邮件之发送带附件邮件一
- javamail发送文本邮件、HTML邮件及带附件邮件
- 使用javaxmail发送邮件(带/不带附件,文本邮件/html邮件)
- 使用JavaMail发送邮件之发送文本邮件