当前位置: 首页 > 知识库问答 >
问题:

如何使用JavaMail和AWS发送邮件

仲学真
2023-03-14

大家好,我正在尝试使用JavaMail和Amazon SES发送电子邮件,这是我写的代码

static Properties props = new Properties();

static {
    props.setProperty("mail.transport.protocol", "aws");
    props.setProperty("mail.aws.user", "userName");
    props.setProperty("mail.aws.password", "secretKey");
}

void doThis() throws AddressException, MessagingException {
    Session session = Session.getDefaultInstance(props);

    Message mimeMessage = new MimeMessage(session);
    mimeMessage.setFrom(new InternetAddress("support@xyz.com"));
    mimeMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse("kaustubh@xyz.com"));
    mimeMessage.setSubject("Subject");
    mimeMessage.setContent("Message contenet", "text/html");

    Transport t = new AWSJavaMailTransport(session, null);
    t.connect();
    t.sendMessage(mimeMessage, null);
    t.close();
}

但我有个例外说,

线程“main”javax中出现异常。邮政SendFailedException:无法发送电子邮件;嵌套的例外是:com。亚马逊。服务。简单邮件。模型MessageRejectedException:未验证电子邮件地址。以下身份未通过US-EAST-1区域的登记

我没有得到任何解决方案,stackOverflow家族的任何建议都会有很大帮助。

共有2个答案

梁丘俊人
2023-03-14

线程“main”javax中出现异常。邮政SendFailedException:无法发送电子邮件;嵌套的例外是:com。亚马逊。服务。简单邮件。模型MessageRejectedException:未验证电子邮件地址。以下身份未通过US-EAST-1区域的登记

亚马逊告诉您,您必须验证您发送的电子邮件地址。如果来自和发送的电子邮件地址没有经过验证,则发送电子邮件失败。

宇文卓
2023-03-14

下面是发送电子邮件的V2 SES代码...

public class SendMessage {

    // This value is set as an input parameter
    private static String SENDER = "";

    // This value is set as an input parameter
    private static String RECIPIENT = "";

    // This value is set as an input parameter
    private static String SUBJECT = "";


    // The email body for recipients with non-HTML email clients
    private static String BODY_TEXT = "Hello,\r\n" + "Here is a list of customers to contact.";

    // The HTML body of the email
    private static String BODY_HTML = "<html>" + "<head></head>" + "<body>" + "<h1>Hello!</h1>"
            + "<p>Here is a list of customers to contact.</p>" + "</body>" + "</html>";

    public static void main(String[] args) throws IOException {

        if (args.length < 3) {
            System.out.println("Please specify a sender email address, a recipient email address, and a subject line");
            System.exit(1);
        }

        // snippet-start:[ses.java2.sendmessage.main]
        SENDER = args[0];
        RECIPIENT = args[1];
        SUBJECT = args[2];

        try {
            send();

        } catch (IOException | MessagingException e) {
            e.getStackTrace();
        }
    }

    public static void send() throws AddressException, MessagingException, IOException {

        Session session = Session.getDefaultInstance(new Properties());

        // Create a new MimeMessage object
        MimeMessage message = new MimeMessage(session);

        // Add subject, from and to lines
        message.setSubject(SUBJECT, "UTF-8");
        message.setFrom(new InternetAddress(SENDER));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(RECIPIENT));

        // Create a multipart/alternative child container
        MimeMultipart msgBody = new MimeMultipart("alternative");

        // Create a wrapper for the HTML and text parts
        MimeBodyPart wrap = new MimeBodyPart();

        // Define the text part
        MimeBodyPart textPart = new MimeBodyPart();
        textPart.setContent(BODY_TEXT, "text/plain; charset=UTF-8");

        // Define the HTML part
        MimeBodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent(BODY_HTML, "text/html; charset=UTF-8");

        // Add the text and HTML parts to the child container
        msgBody.addBodyPart(textPart);
        msgBody.addBodyPart(htmlPart);

        // Add the child container to the wrapper object
        wrap.setContent(msgBody);

        // Create a multipart/mixed parent container
        MimeMultipart msg = new MimeMultipart("mixed");

        // Add the parent container to the message
        message.setContent(msg);

        // Add the multipart/alternative part to the message
        msg.addBodyPart(wrap);


        try {
            System.out.println("Attempting to send an email through Amazon SES " + "using the AWS SDK for Java...");

            Region region = Region.US_WEST_2;

            SesClient client = SesClient.builder().region(region).build();

            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            message.writeTo(outputStream);

            ByteBuffer buf = ByteBuffer.wrap(outputStream.toByteArray());

            byte[] arr = new byte[buf.remaining()];
            buf.get(arr);

            SdkBytes data = SdkBytes.fromByteArray(arr);

            RawMessage rawMessage = RawMessage.builder()
                    .data(data)
                    .build();

            SendRawEmailRequest rawEmailRequest = SendRawEmailRequest.builder()
                    .rawMessage(rawMessage)
                    .build();

            client.sendRawEmail(rawEmailRequest);

        } catch (SdkException e) {
            e.getStackTrace();
        }
        // snippet-end:[ses.java2.sendmessage.main]
    }
}
// snippet-end:[ses.java2.sendmessage.complete]
 类似资料:
  • 我有一个Outlook.com的电子邮件帐户。我希望我的Java应用程序能够使用JavaMail从该电子邮件帐户发送电子邮件。为此,我通过OAuth授予了我的应用程序访问权限。 我已经能够使用msgshow中提供的精彩示例应用程序通过IMAP成功连接.java。但是,我正在尝试通过SMTP通过我的 Outlook.com 电子邮件帐户发送电子邮件,但我没有任何运气。我尝试过同时使用msgsend.

  • 我需要通过我的应用程序发送一封电子邮件,比如使用带有OAuth的javamail API,但我需要如何使用我在下面添加的代码。 我的代码:

  • 我想用Java发送一封邮件,但使用我在http://www.tutorialspoint.com/Java/java_sending_email.htm找到的这篇泰文教程是行不通的。 这里是我的主要方法 我有以下错误: javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:25;嵌套异常为:java.net.connectException:

  • 本文向大家介绍基于java使用JavaMail发送邮件,包括了基于java使用JavaMail发送邮件的使用技巧和注意事项,需要的朋友参考一下 一、邮件的相关概念 邮件协议。主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Protocol 3,即邮局协议的第三个版本,用于接收邮件 IM

  • 这是我发送邮件的代码 我在tomcat的lib文件夹中添加了和。我将eclipse与Tomcat7、JRE7和Struts2一起使用。通过Java发送邮件时出现以下控制台错误:

  • 我正在使用发送电子邮件,但得到的错误是 我正在做的是,我有一个类作为。 上面的类有一个静态方法,-它将SMTP服务器设置和消息详细信息作为参数。 我把SMTP服务器设置放在我的web.xml文件中,但不知道出了什么问题 我的类 } 这是我的网站。xml文件 这是我的servlet类 我在做正确的事情,但不知道问题是什么 如果我在gmail中启用较少的安全应用程序设置,那么它的工作正常,我不认为这是