SMTP郵件發送,需要一個SMTP郵件服務器。
1.
驗證發件人的授權
新建java類,MyAuthenticator.java 內容如下:


import javax.mail.PasswordAuthentication;

class MyAuthenticator extends javax.mail.Authenticator


{
private String strUser;

private String strPwd;

public MyAuthenticator(String user, String password)

{
this.strUser = user;
this.strPwd = password;
}

protected PasswordAuthentication getPasswordAuthentication()

{
return new PasswordAuthentication(strUser, strPwd);
}
}



2.SMTP郵件發送
新建java類,SendEmail.java 內存如下:

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
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;


public class SendEmail


{
private static String host = ""; // SMTP服務器地址

private static String password = ""; // 密碼

private static String from = ""; // 發件人

private static String to = ""; // 收件人

private static String cc = “”; // 抄送人(中間使用;隔開)

public static void send(String subject, String content, String filename)

{
Properties props = System.getProperties();

props.put("mail.smtp.host", host);//指定SMTP服務器
props.put("mail.transpost.protocol", "smtp");
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "true");//指定是否需要SMTP驗證
//需要SSL安全驗證
props.setProperty("mail.smtp.starttls.enable", "true");

// props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// props.setProperty("mail.smtp.socketFactory.fallback", "false");
// props.setProperty("mail.smtp.socketFactory.port", "25");
try

{
MyAuthenticator myauth = new MyAuthenticator(from, password);
Session mailSession = Session.getDefaultInstance(props, myauth);
mailSession.setDebug(true);//是否在控制臺顯示debug信息

Message message = new MimeMessage(mailSession);
message.setFrom(new InternetAddress(from));//發件人
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人
// 是否有抄送人
if (!StringUtil.isBlank(cc))

{
String[] bccs = cc.split(";");
InternetAddress bcc = null;
InternetAddress[] bccAddrs = new InternetAddress[bccs.length];
for (int i = 0; i < bccs.length; i++)

{
if (!"".equals(bccs[i].trim()))

{
bcc = new InternetAddress(bccs[i].trim());
bccAddrs[i] = bcc;
}
}
message.setRecipients(Message.RecipientType.CC, bccAddrs);
}
message.setSubject(subject);//郵件主題
// 有附件
if (!StringUtil.isBlank(filename))

{
Multipart mp = new MimeMultipart();
BodyPart bp = new MimeBodyPart();

bp.setContent(content, "text/html;charset=utf-8");//郵件正文
mp.addBodyPart(bp);

File file = new File(filename);
if (file.exists())

{
BodyPart mdp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(file);
mdp.setDataHandler(new DataHandler(fileds));
mdp.setFileName(fileds.getName());
mp.addBodyPart(mdp);
}
message.setContent(mp);
}
// 無附件
else

{
message.setContent(content, "text/html;charset=utf-8");//郵件正文
}
message.saveChanges();

Transport.send(message);

}
catch (Exception e)

{
return;
}
}


public static void main(String[] args)

{
SendEmail.send("測試郵件", "郵件發送測試!", "本地附件地址");
}

posted on 2011-04-19 10:42
Jarry 閱讀(252)
評論(0) 編輯 收藏 所屬分類:
Java