使用Apache Commons邮件库在Java中发送电子邮件

12

我正在使用Apache Commons Email库发送邮件,但无法通过GMail SMTP服务器发送邮件。
有人能提供可以与GMail SMTP服务器和其他服务器配合使用的样例代码吗?

我正在使用以下代码,但不起作用:

String[] recipients = {"receiver@gmail.com"};

SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setAuthentication("sender@gmail.com", "mypasswd");
email.setDebug(true);
email.setSmtpPort(465);

for (int i = 0; i < recipients.length; i++)
{
    email.addTo(recipients[i]);
}

email.setFrom("sender@gmail.com", "Me");
email.setSubject("Test message");
email.setMsg("This is a simple test of commons-email");
email.send();
3个回答

10

向GMail SMTP服务器发送电子邮件需要身份验证和SSL。用户名和密码很直观。请确保您设置了以下属性以启用身份验证和SSL,这样它就可以工作了。

mail.smtp.auth=true
mail.smtp.starttls.enable=true

在示例代码中添加以下内容以启用TLS。

对于API版本<1.3,请使用:
email.setTSL(true);
该方法已弃用版本≥1.3,您应改用:email.setStartTLSEnabled(true);


10
请在下方找到一个可用的代码。显然,您需要将Apache JAR文件添加到您的项目构建路径中。
public static void sendSimpleMail() throws Exception {
    Email email = new SimpleEmail();
    email.setSmtpPort(587);
    email.setAuthenticator(new DefaultAuthenticator("your gmail username",
            "your gmail password"));
    email.setDebug(false);
    email.setHostName("smtp.gmail.com");
    email.setFrom("me@gmail.com");
    email.setSubject("Hi");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("you@gmail.com");
    email.setTLS(true);
    email.send();
    System.out.println("Mail sent!");
}

敬礼,Sergiu


2

我使用commons.email解决了我的问题。

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接