我正在使用我的Gmail
帐户运行这个简单的示例,但它不工作,并给出以下错误:
send failed, exception: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. nv2sm4478384pbb.6
下面是我的代码
public class Email
{
public static void main(String [] args)
{
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.googlemail.com");
props.put("mail.from", "myemail@gmail.com");
Session session = Session.getInstance(props, null);
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO,
"myemail@hotmail.com");
msg.setSubject("JavaMail hello world example");
msg.setSentDate(new Date());
msg.setText("Hello, world!\n");
Transport.send(msg);
} catch (MessagingException mex) {
System.out.println("send failed, exception: " + mex);
}
}
}
8条答案
按热度按时间7vux5j2d1#
你可能试图使用Gmail服务器的25端口通过未经认证的连接向第三方发送邮件。Gmail不允许你这样做,因为这样一来,任何人都可以使用Gmail的服务器向其他人发送邮件。这被称为“开放中继”,在早期是垃圾邮件的常见推动者。开放中继在互联网上不再被接受。
您需要请求SMTP客户端使用经过身份验证的连接(可能在587端口)连接到Gmail。
nmpmafwu2#
必须更改smtp端口和socketFactory
希望它对你有用。
oipij1gg3#
添加
解决了我的问题)
我的问题是:
邮件发送失败异常:530 5.7.0必须先发出STARTTLS命令。u186sm7971862pfu.82 - gsmtp
oyjwcjzk4#
我也面临着同样的问题,而我正在建立电子邮件通知应用程序。你只需要添加一行。下面一个救了我的一天。
邮件发送失败异常:530 5.7.0必须先发出STARTTLS命令。h13-v6sm10627790pgp.13-gsmtp
希望这对你有帮助。
0aydgbwb5#
谷歌现在有一个功能,声明它不会允许不安全的设备发送电子邮件。当我运行我的程序时,它在第一篇文章中出现了错误。我必须进入我的帐户,允许不安全的应用程序发送电子邮件,我点击了我的帐户,进入安全选项卡,允许不安全的应用程序使用我的gmail。
nnsrf1az6#
smdnsysy7#
请尝试以下代码:
你必须降低邮件发送者的安全性。如果问题仍然存在,我认为可能是防病毒软件引起的,试着禁用它。
agyaoht78#
当我设置props.put(“mail.smtp.starttls.enable”,myMailConfig. starttls)时,我也收到了这个错误;这里myMailConfig.StartTLS是一个字符串并且有一个真值,所以这个字符串是第一个原因。所以试着像props.put(“mail.smtp.starttls.enable”,true)一样设置它(布尔值)为真;或者如果是动态的,那么确保你的变量是布尔值,或者如果是字符串,那么db值应该设置为真。