2010年12月30日 星期四

Java send mail by Google App Engine

在 Google App Engine 中 有 內建 寄收信的功能,所以也可以利用 GAE 的內建函式達成寄收信的功能。

以下是我參考GAE 修改的code, 是一個servlet 所以還要記得設定web.xml 這裡就不多說了

注意這裡 setFrom 要用GAE 開發者的gmail 不然是會寄不出去也不會有錯誤訊息



import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



@SuppressWarnings("serial")
public class SendMail extends HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
req.setCharacterEncoding("UTF-8");


Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);

String msgBody = "Hello ";

try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("Admin@gmail.com"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("xxx@gmail.com", "Mr. User"));
msg.setSubject("Your Example.com account has been activated");
msg.setText(msgBody);
Transport.send(msg);

} catch (AddressException e) {
// ...
} catch (MessagingException e) {
// ...
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("Message sent.");
resp.setContentType("text/plain");
resp.getWriter().println("Message sent.");
}

}






附註 InternetAddress函式 說明


new InternetAddress("email","想要給的名稱");







詳細可以參考 GAE 的說明

沒有留言: