博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 送信简单实例
阅读量:7239 次
发布时间:2019-06-29

本文共 5084 字,大约阅读时间需要 16 分钟。

hot3.png

package OSChina;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.PasswordAuthentication;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;/** * * 

* Description:use the javamail to send email!Must use sun's mail.jar,no apache * jar. *

* * @author */public class SendMail { public static void main(String[] args) { SendMail sendMail = new SendMail("3332211@qq.com", "xxxxx@126.com", "smtp.126.com", "username", "password", "测试Java Mail", "您好,Javamail!我测试!"); // 增加附件 sendMail.addAttachment("D:/english.txt"); // sendMail.addAttachment("D://IOTest.java"); if (sendMail.send()) { System.out.println("Successful!"); } } private String to; // 接收人 private String from; // 发送人 private String smtpServer; // smtp地址. private String userName; private String password; private String subject; private String content; // 记录所有附件文件的集合,发送邮件的附件 List
attachments = new ArrayList
(); public SendMail(String to, String from, String smtpServer, String userName, String password, String subject, String content) { this.to = to; this.from = from; this.smtpServer = smtpServer; this.userName = userName; this.password = password; this.subject = subject; this.content = content; } // 将字符串转换为中文,否则标题会发生乱码现象,QQ邮箱为UTF-8.用GBK.GB2312都会乱码. public String translateChinese(String strText) { try { // MimeUtility.encodeText(String text, String charset, String // encoding) throws java.io.UnsupportedEncodingException // text 头值 . charset 字符集。如果此参数为 null,则使用平台的默认字符集。 // encoding 要使用的编码。当前支持的值为 "B" 和 "Q"。如果此参数为 null,则在大部分字符使用 ASCII // 字符集编码时使用 "Q" 编码;其他情况使用 "B" 编码。 strText = MimeUtility.encodeText(new String(strText.getBytes(), "UTF-8"), "UTF-8", "B"); } catch (Exception e) { e.printStackTrace(); } return strText; } // 增加附件 public void addAttachment(String fname) { attachments.add(fname); } public boolean send() { // 创建邮件Session所需的Properties对象.API建议使用set而不是put(putall). Properties props = new Properties(); props.setProperty("mail.smtp.host", smtpServer); props.setProperty("mail.smtp.auth", "true"); // 创建Session对象,代表JavaMail中的一次邮件会话. // Authenticator==>Java mail的身份验证,如QQ邮箱是需要验证的.所以需要用户名,密码. // PasswordAuthentication==>系统的密码验证.内部类获取,或者干脆写个静态类也可以. Session session = Session.getDefaultInstance(props, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); } } ); try { // 构造MimeMessage并设置相关属性值,MimeMessage就是实际的电子邮件对象. MimeMessage msg = new MimeMessage(session); // 设置发件人 msg.setFrom(new InternetAddress(from)); // 设置收件人,为数组,可输入多个地址. InternetAddress[] addresses = { new InternetAddress(to) }; // Message.RecipientType==>TO(主要接收人),CC(抄送),BCC(密件抄送) msg.setRecipients(Message.RecipientType.TO, addresses); // 设置邮件主题,如果不是UTF-8就要转换下. // subject=translateChinese(subject); msg.setSubject(subject); // =====================正文部分=========== // 构造Multipart容器 Multipart mp = new MimeMultipart(); // =====================正文文字部分=========== // 向Multipart添加正文 MimeBodyPart mbpContent = new MimeBodyPart(); mbpContent.setText(content); // 将BodyPart添加到MultiPart容器中 mp.addBodyPart(mbpContent); // =====================正文附件部分=========== // 向MulitPart添加附件,遍历附件列表,将所有文件添加到邮件消息里 for (String efile : attachments) { MimeBodyPart mbpFile = new MimeBodyPart(); // 以文件名创建FileDataSource对象 FileDataSource fds = new FileDataSource(efile); // 处理附件 mbpFile.setDataHandler(new DataHandler(fds)); mbpFile.setFileName(fds.getName()); // 将BodyPart添加到Multipart容器中 mp.addBodyPart(mbpFile); } attachments.clear(); // 向MimeMessage添加Multipart msg.setContent(mp); msg.setSentDate(new Date()); // 发送邮件,使用如下方法! Transport.send(msg); } catch (Exception e) { e.printStackTrace(); return false; } return true; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getSmtpServer() { return smtpServer; } public void setSmtpServer(String smtpServer) { this.smtpServer = smtpServer; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; }}

转载于:https://my.oschina.net/xiufeng/blog/108939

你可能感兴趣的文章
stl学习总结简略
查看>>
Struts2中 No result defined for action com.test.action.LoginAction and result success
查看>>
对PostgreSQL源代码中的 ObjectClass的初步理解
查看>>
Oracle数据库系统性能优化策略
查看>>
rabbitmq使用__python客户端(消息发送者)
查看>>
bandwidth 0.32k 发布,内存带宽测试工具
查看>>
【笔记】谭浩强 《C程序设计》自学笔记系列01
查看>>
在sqlserver中查找某个字段存在于那个表中的语句
查看>>
http://blog.csdn.net/totogo2010/article/details/8233565
查看>>
3和b
查看>>
Solr4:加入中文分词IKAnalyzer2012 FF
查看>>
Java 容器集合框架概览
查看>>
Linux echo命令
查看>>
用C#一步步创建Window Service (转)
查看>>
javascript library
查看>>
Mono 3.0.12 支持可移植类库
查看>>
js操作label,给label赋值,和取label的值
查看>>
MySQL主从复制与读写分离
查看>>
BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 (动态树入门)
查看>>
解决/dev/fb0无法打开的问题
查看>>