我正在创建一个应用程序,其中用户应该能够通过电子邮件发送一些报告。我需要用户能够指定他/她的电子邮件地址,并为程序设置必要的属性。我的代码工作时,用户使用gmail帐户。这是代码的一部分:
final String password = "password";
Properties props = new Properties();
//gmail
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
上面的代码是有效的。当我尝试从GoDaddy托管的电子邮件发送邮件时,我遇到了一个问题。我使用以下代码发送GoDaddy电子邮件:
final String password = "password";
Properties props = new Properties();
//GoDaddy
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtpout.secureserver.net");
props.put("mail.smtp.port", "80");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
当我尝试上述操作并转到目标电子邮件时,我没有找到任何东西,但当我检查GoDaddy电子邮件的收件箱时,它应该是发件人的电子邮件,我发现收件箱中的邮件传递系统消息时,以下内容:(返回代码550)sid:我的天5.7.1更多信息。cm5si19503077pac.22 - gsmtp)。有人能告诉我问题出在哪里吗?谢谢。
3条答案
按热度按时间mzaanser1#
大多数邮件服务器不会让你发送任何任意发件人地址的邮件。如果他们这样做,他们将被用于垃圾邮件,钓鱼等。你有几个选择...
1.找一个能让你做到这一点的服务。祝你好运!
1.运行你自己的邮件服务器。显然,工作量很大。
1.要求用户提供他们自己的邮件服务器的所有登录信息,然后通过他们自己的邮件服务器发送邮件。用户可能不喜欢这样。
1.以与您的应用程序关联的用户身份发送报告,而不是以最终用户身份发送。
gywdnpxw2#
问题出在返回代码550中。此返回代码通常意味着服务器无法投递邮件,因为它试图发送到的收件箱不存在。我会找出使用GoDaddy时导致错误代码的原因,并在不同的电子邮件提供商中尝试您的代码。
http://www.serversmtp.com/en/error-550
mctunoxg3#
从Various SMTP error codes explained开始,它是以下值之一: