用apache-mail组件发邮件对比
wangjianme
12年前
import java.net.URL;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
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 org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class JavaMail {
@Test
public void defaultSendMail() throws Exception {
String host = "smtp.sina.com";// "smtp.gmail.com"
String port = "25"; //"465"
Properties props = new Properties();
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.port", port);
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.ssl.enable", "false");//"true"
props.setProperty("mail.smtp.connectiontimeout", "5000");
final String user = "***@sina.com"; //"***@gmail.com"
final String pwd = "***";
Session session = Session.getDefaultInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//登录用户名密码
return new PasswordAuthentication(user,pwd);
}
});
session.setDebug(true);
Transport transport = session.getTransport("smtp");//"smtps"
transport.connect(host,user,pwd);
//消息
MimeMessage message = new MimeMessage(session);
setMailContent(message);//。。。。。。。。。。。。。。。。。。
message.setSubject("邮件标题");
//消息发送者接收者设置
//message.setFrom(new InternetAddress(user,"发件人名称"));
message.addRecipients(Message.RecipientType.TO,new InternetAddress[]{
new InternetAddress("to1@163.com","to1昵称"),
new InternetAddress("to2@163.com","to2昵称")
});
message.saveChanges();
//发送
transport.send(message);
//Transport.send(message);
transport.close();
}
//设定邮件内容
private void setMailContent(MimeMessage message) throws MessagingException {
//方法一:只有文本邮件
//message.setContent("邮件内容..", "text/plain");//纯文本内容
//方法二:添加附件的邮件
Multipart part = new MimeMultipart();
BodyPart bodypart1 = new MimeBodyPart();
bodypart1.setText("邮件内容");
part.addBodyPart(bodypart1 );
BodyPart bodypart2 = new MimeBodyPart();
bodypart2.setFileName("fileName");
bodypart2.setDataHandler(new DataHandler(new FileDataSource("f:\\ok.txt")));
part.addBodyPart(bodypart2);
message.setContent(part);
}
@Test
public void apacheSendMail() throws Exception {
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setSSL(true);
email.setSmtpPort(465);
// email.setSslSmtpPort("465");
email.setTLS(true);//gmail
email.setAuthenticator(new DefaultAuthenticator("h***@gmail.com", "***"));
email.setFrom("h***@gmail.com");
email.setSubject("TestCommonMail");
email.setCharset("gbk");
//文本邮件
email.setMsg("This is a test mail ... :-)");
email.addTo("**to@qq.com");
email.send();
}
@Test
public void apacheSendHtmlMail() throws Exception {
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSSL(true);
email.setSmtpPort(465);
email.setTLS(true);//gmail
email.setAuthenticator(new DefaultAuthenticator("h***@gmail.com", "***"));
email.setFrom("h***@gmail.com");
email.addTo("**to@qq.com");
email.setSubject("TestCommonMail");
email.setCharset("gbk");
//html邮件
String cid = email.embed(new URL("http://www.google.com.tw/intl/en_com/images/srpr/logo1w.png"), "google logo");
email.setHtmlMsg("<html>The logo - <img src='cid:"+cid+"'></html>");
email.send();
}
@Test
public void apacheSendAttachMail() throws Exception {
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com");
email.setSSL(true);
email.setSmtpPort(465);
email.setTLS(true);//gmail
email.setAuthenticator(new DefaultAuthenticator("h***@gmail.com", "***"));
email.setFrom("h***@gmail.com");
email.addTo("**to@qq.com");
email.setSubject("TestCommonMail");
email.setMsg("This is a test mail ... :-)");
email.setCharset("gbk");
EmailAttachment attach = new EmailAttachment();
attach.setName("attachFileName");
attach.setPath("f:\\ok.txt");
attach.setDescription(EmailAttachment.ATTACHMENT);
email.attach(attach );
email.send();
}
}