我正在尝试使用以下代码:
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import javax.mail.*; import javax.mail.internet.*; // important import javax.mail.event.*; // important import java.net.*; import java.util.*; public class servletmail extends HttpServlet { public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { PrintWriter out=response.getWriter(); response.setContentType("text/html"); try { Properties props=new Properties(); props.put("mail.smtp.host","localhost"); // 'localhost' for testing Session session1 = Session.getDefaultInstance(props,null); String s1 = request.getParameter("text1"); //sender (from) String s2 = request.getParameter("text2"); String s3 = request.getParameter("text3"); String s4 = request.getParameter("area1"); Message message =new MimeMessage(session1); message.setFrom(new InternetAddress(s1)); message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(s2,false)); message.setSubject(s3); message.setText(s4); Transport.send(message); out.println("mail has been sent"); } catch(Exception ex) { System.out.println("ERROR....."+ex); } } }
我正在使用mail.jar和activation.jar.但我不明白我应该如何配置邮件服务器.我应该使用哪个邮件服务器?我可以使用以上代码发送电子邮件吗?邮件服务器有什么要求?我该怎么配置它?
解决方法
要开始,你需要一个
SMTP server.它需要能够发送电子邮件.与您需要HTTP服务器一样能够提供网站的方式相同.你显然已经有一个HTTP服务器(有一个servletcontainer),但你没有配置SMTP服务器.
您可以使用与您自己现有的电子邮件帐户相关联的SMTP服务器,例如您的ISP或Gmail,Yahoo等公共邮箱.您可以在其文档中找到SMTP连接详细信息.你通常只需要知道主机名和端口号.用户名/密码与您的电子邮件账号相同.
然后将主机名和端口号设置为JavaMail的SMTP属性:
Properties properties = new Properties(); properties.put("mail.transport.protocol","smtp"); properties.put("mail.smtp.host","smtp.example.com"); // smtp.gmail.com? properties.put("mail.smtp.port","25");
用户名/密码应在Authenticator中使用,如下所示:
properties.put("mail.smtp.auth","true"); Authenticator authenticator = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("yourusername","yourpassword"); } };
然后你可以得到邮件会话如下:
Session session = Session.getDefaultInstance(properties,authenticator);
使用您的ISP或公共邮箱的帐户,但是您不限于在电子邮件的“发件人”字段中使用自己的地址,通常也是允许以特定间隔发送的电子邮件数量.如果您想要解决此问题,那么您需要安装自己的SMTP服务器,例如基于Java的Apache James或Microsoft Exchange等.
毕竟,我建议你通过一个JavaMail tutorial让你得到一个更好的了解.