当前位置: 首页 > 面试题库 >

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

邵飞鸿
2023-03-14
问题内容

我正在尝试使用以下代码:

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服务器。必须能够发送电子邮件。与需要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帐户或公共邮箱帐户,您只能From在电子邮件字段中使用自己的地址,而且通常也要使用允许在特定时间间隔内发送的电子邮件数量。如果要解决此问题,则需要安装自己的SMTP服务器,例如基于Java的Apache
James
或Microsoft Exchange等。

毕竟,我建议您阅读JavaMail教程,以便更好地理解。



 类似资料:
  • 我目前正在尝试学习微服务架构。我一直在尝试开发一个 Spring 启动应用程序。我刚刚在我的应用程序中实现了配置服务器。在我实现配置服务器之前,liquibase 在这些属性上工作正常。 实现后,我的服务没有找到db.changelog-master.xml文件。db.changelog目录在我的服务资源下。我应该如何更改“更改日志”属性?

  • 我无法在laravel 6中配置邮件服务器我的配置文件或Hibernate . evn 邮件/配置 GOOGLE帐户 不太安全的应用程序访问-打开 帐户访问已启用-请尝试从新设备或应用程序再次登录到您的Google帐户 错误 我有一个批量错误,如果我使用的密码Rest是 无法使用3个可能的验证器在SMTP服务器上使用用户名“my\u email”进行身份验证。验证器登录返回了预期的响应代码235,

  • 我正在尝试使用PHP发送电子邮件。邮件返回true。但我正在收到邮件。所以我猜测可能是服务器出了问题。是否有任何教程解释如何配置服务器使用Cpanel正确发送电子邮件?

  • 大家好,我正在尝试使用JavaMail和Amazon SES发送电子邮件,这是我写的代码, 但我有个例外说, 线程“main”javax中出现异常。邮政SendFailedException:无法发送电子邮件;嵌套的例外是:com。亚马逊。服务。简单邮件。模型MessageRejectedException:未验证电子邮件地址。以下身份未通过US-EAST-1区域的登记 我没有得到任何解决方案,s

  • 请参考下面的代码片段server.xml. 在自由服务器版本8.5.5.7中部署应用程序时收到以下错误。 我已经在其他地方删除了邮件罐,只保存在耳朵/网络inf / lib文件夹中,但甚至得到同样的错误。任何人都可以拨打如何在 Liberty 中配置邮件会话的电话。自由 8.5.5.7 版本不支持 java 邮件 1.5 功能。 注意:我的应用程序已经在Tomcat /WAS中成功运行。

  • 我有一个要求,作为其中的一部分,我想阅读outlook收到的电子邮件,然后做一些处理。我正在使用JavaMail API和IMAP协议来实现这一点。我编写了一个java类,可以读取messagesAdded事件上的电子邮件。 它的完美工作正常与下面的代码在单个服务器环境,但当我部署到生产,我们有2个服务器,我结束了处理每个电子邮件两次,因为相同的代码部署在两个服务器上,都试图读取电子邮件,一旦它在