📄 sendmail.java
字号:
package jodd.mail;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
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;
/**
* Sends e-mails in an easy way.
*
* @2do i18n
*/
public class SendMail {
private static SmtpServer defaultSmtpServer = null;
/**
* Sets default SMTP server.
*
* @param server default SMTP server
*/
public static void setDefaultSmtpServer(SmtpServer server) {
defaultSmtpServer = server;
}
/**
* Returns default SMTP server.
*
* @return default SMTP server
*/
public static SmtpServer getDefaultSmtpServer() {
return defaultSmtpServer;
}
// ---------------------------------------------------------------- send
/**
* Sends an email through default SMTP server.
*
* @param email email
*
* @exception MessagingException
*/
public static void send(Email email) throws MessagingException {
send(email, null);
}
/**
* Sends an email through SMTP server.
*
* @param email email
* @param smtpServer SMTP server or null for default one
*
* @exception MessagingException
*/
public static void send(Email email, SmtpServer smtpServer) throws MessagingException {
if (smtpServer == null) {
smtpServer = defaultSmtpServer;
}
Properties props = new Properties();
props.put("mail.smtp.host", smtpServer.getHost());
Authenticator auth = null;
if (smtpServer.getUsername() != null) {
props.put("mail.smtp.auth", "true");
auth = new SmtpSimpleAuthenticator(smtpServer.getUsername(), smtpServer.getPassword());
}
Session session = Session.getInstance(props, auth);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(email.getFrom()));
int totalTo = email.getTo().length;
InternetAddress[] address = new InternetAddress[totalTo];
for (int i = 0; i < totalTo; i++) {
address[i] = new InternetAddress(email.getTo()[i]);
}
msg.setRecipients(Message.RecipientType.TO, address);
if (email.getCc() != null) {
int totalCc = email.getCc().length;
address = new InternetAddress[totalCc];
for (int i = 0; i < totalCc; i++) {
address[i] = new InternetAddress(email.getCc()[i]);
}
msg.setRecipients(Message.RecipientType.CC, address);
}
if (email.getBcc() != null) {
int totalBcc = email.getBcc().length;
address = new InternetAddress[totalBcc];
for (int i = 0; i < totalBcc; i++) {
address[i] = new InternetAddress(email.getBcc()[i]);
}
msg.setRecipients(Message.RecipientType.BCC, address);
}
msg.setSubject(email.getSubject());
Date date = email.getSentDate();
if (date == null) {
date = new Date();
}
msg.setSentDate(date);
HashMap headers = email.getHeaders();
Iterator it = headers.keySet().iterator();
while (it.hasNext()) {
String name = (String) it.next();
String value = (String) headers.get(name);
msg.setHeader(name, value);
}
MimeBodyPart messageData = new MimeBodyPart();
if (email.isHtmlMessage()) {
messageData.setContent(email.getMessage(), "text/html");
} else {
//messageBodyPart.setContent(email.getMessage(), "text/plain; charset=\"Windows-1250\";");
//messageBodyPart.setText(email.getMessage(), "Windows-1250");
messageData.setText(email.getMessage());
}
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageData);
int totalAttachments = email.getTotalAttachments();
for (int i = 0; i < totalAttachments; i++) {
multipart.addBodyPart(email.getAttachmentBodyPart(i));
}
msg.setContent(multipart);
Transport.send(msg);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -