首页 > 解决方案 > 当我尝试通过 Amazon SES 发送邮件时,总是出现错误

问题描述

我正在尝试通过我在 Amazon SES 上的已验证邮件将邮件发送到另一封已验证邮件,但我无法发送任何邮件,代码是否有任何错误或 Amazon SES 方面存在问题?如果我尝试发送它会显示“正在发送...”,但有时它会失败并且“电子邮件未发送。错误消息:535 身份验证凭据无效”。

package Mail;

import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class mailSample {

    static final String FROM = "MyEmail";
    static final String FROMNAME = "MyName";

    static final String TO = "Reciever Email";

    static final String SMTP_USERNAME = "********";

    static final String SMTP_PASSWORD = "**************************";

    static final String CONFIGSET = "ConfigSet";

    static final String HOST = "email-smtp.us-west-1.amazonaws.com";

    static final int PORT = 587;

    static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)";

    static final String BODY = String.join(System.getProperty("line.separator"), "<h1>Amazon SES SMTP Email Test</h1>",
            "<p>This email was sent with Amazon SES using the ",
            "<a href='https://github.com/javaee/javamail'>Javamail Package</a>",
            " for <a href='https://www.java.com'>Java</a>.");

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

        Properties props = System.getProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.port", PORT);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(props);

        MimeMessage msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress(FROM, FROMNAME));
        msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
        msg.setSubject(SUBJECT);
        msg.setContent(BODY, "text/html");

        msg.setHeader("X-SES-CONFIGURATION-SET", CONFIGSET);

        Transport transport = session.getTransport();

        try {
            System.out.println("Sending...");

            transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);

            transport.sendMessage(msg, msg.getAllRecipients());
            System.out.println("Email sent!");
        } catch (Exception ex) {
            System.out.println("The email was not sent.");
            System.out.println("Error message: " + ex.getMessage());
        } finally {

            transport.close();
        }
    }
}

标签: javaemailamazon-ses

解决方案


推荐阅读