java信_java 送信简单实例

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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值