- None(不加密)
- TLS , port number:587
- SSL , port number:465 (參考網址)
需要包裝javamail API到lib,下例用JavaMail 1.4.2進行包裝。
注意: 若發送信件內容,不只是純文字,而有用到html、CSS。
經過測試後,確定gmail 不支援部分block css內容,若可行,請寫inline css。
其他html email設計的要素,參考:
package option;
import java.text.DateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
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;
public class Email {
String subject;
String content;
String receiver;
Email() {
subject = "";
content = "";
receiver = "";
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setContents(String content) {
this.content = content;
}
public void setReceiverAddress(String address) {
this.receiver = address;
}
static Properties generateRequireProp() {
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// set up gmail information
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.port", "465");
return props;
}
boolean send() {
if (receiver.equals("")) {
System.out.println("Email Receiver is empty.");
return false;
}
Properties props = generateRequireProp();
final String username = "sender@gmail.com";
final String password = "sender password";
// build the new session service
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
//build the mail of sender , receiver and subject info
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver, false));
message.setSubject(subject);
// set mime content
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(content, "text/html;charset=utf-8");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
System.out.println("Done");
} catch (Exception e) {
throw new RuntimeException(e);
}
return true;
}
public static void main(String args[]) {
Email email = new Email();
email.setSubject("Test mail "+DateFormat.getDateTimeInstance().format(new Date(System.currentTimeMillis())));
email.setContents("This is a test e-mail by javamail library");
email.setReceiverAddress("receiver@mail");
if (email.send())
System.out.println("Sending is successing");
else
System.out.println("Error");
}
}
沒有留言:
張貼留言