Apache James 是純 Java 實現的企業級郵件服務器,支援 SMTP/POP3/IMAP。本文覆蓋下載安裝、域名配置、賬號創建、JavaMail 代碼發信、Spring 整合發送純文本/HTML/附件/內嵌圖片郵件。
apache-james-2.3.2.zip,解壓。JAVA_HOME 配置正確,端口 25(SMTP)/110(POP3)/119(NNTP) 未被佔用(關閉系統自帶 SMTP 服務)。bin/run.bat 啟動,控制台輸出服務啟動信息即成功。apps/james/SAR-INF/config.xml。<postmaster>、<servernames autodetect="false"><servername>yourdomain.com</servername></servernames>。telnet localhost 4555,登錄 root/root。adduser username password,其他命令見 help。Properties prop = System.getProperties();
prop.put("mail.smtp.host", "smtp.163.com");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.port", "25");
Session session = Session.getInstance(prop, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user@163.com", "pass");
}
});
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("user@163.com"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("to@126.com"));
msg.setSubject("測試");
msg.setContent("內容", "text/html;charset=gbk");
Transport.send(msg);
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="192.168.15.22"/>
<property name="port" value="25"/>
<property name="username" value="dzw@mail.com"/>
<property name="password" value="dzw"/>
<property name="protocol" value="smtp"/>
<property name="defaultEncoding" value="utf-8"/>
<property name="javaMailProperties">
<props><prop key="mail.smtp.auth">true</prop></props>
</property>
</bean>
public class Mail {
private MailSender mailSender;
public void send() {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("dzw@mail.com"); msg.setTo("tom");
msg.setSubject("問好"); msg.setText("好久不見");
mailSender.send(msg);
}
}
public class MailWithHTML {
private JavaMailSender mailSender;
public void send() throws MessagingException, IOException {
MimeMessage mime = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mime, true, "UTF-8");
helper.setFrom("dzw@mail.com"); helper.setTo("tom");
helper.setSubject("歡迎");
String html = "歡迎註冊
";
helper.setText(html, true);
helper.addInline("photo", new ClassPathResource("/attachfiles/Quartz.png"));
mailSender.send(mime);
}
}
helper.addAttachment(MimeUtility.encodeWord(file.getFilename()), file);
JavaMailSender 線程安全,可作為單例 Bean 注入多處。spring.mail.max-attachment-size 並使用流式處理。