加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何配置与JavaMail一起使用的邮件服务器?

发布时间:2020-12-14 05:27:34 所属栏目:Java 来源:网络整理
导读:我正在尝试使用以下代码: import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import javax.mail.*;import javax.mail.internet.*; // importantimport javax.mail.event.*; // importantimport java.net.*;import java.util.*;public c
我正在尝试使用以下代码:
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让你得到一个更好的了解.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读