gpt4 book ai didi

JavaMail,如果接收者邮件错误,不会抛出异常

转载 作者:行者123 更新时间:2023-12-01 15:13:19 25 4
gpt4 key购买 nike

此代码片段,发送邮件:

if (m.send()) {
Log.i("MAIL SENDER: ", "Succesfully");
Toast.makeText(getApplicationContext(),
"The log file has been sent",
Toast.LENGTH_LONG).show();

} else {

throw new MailException();
}

如果收件人邮件不正确,例如 example@gmail.co 而不是 example@gmail.com,则代码将运行到第一个 if block 。为什么当接收器不正确时会发生这种情况?有人可以帮我吗?

从 SharedPreferences 检索邮件设置,并在此方法中检查:

public static boolean isValidEmailAddress(String email) {
boolean result = true;
try {
InternetAddress emailAddr = new InternetAddress(email);
emailAddr.validate();
} catch (AddressException ex) {
result = false;
}
return result;
}

当用户在文本字段中输入电子邮件地址并单击“确定”时,会发生以下情况:

if (isValidEmailAddress(mail)) 
editor.putString("Tomail", mail);
else
Toast.makeText(getApplicationContext(), "Invalid", Toast.LENGHT_LONG).show();

这只会检查邮件是否包含 @ 及其是否有效。

在我的发送方法中:

public SendMail(Context c) {
this();


sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
_host = sharedPrefs.getString("host", null);
_port = sharedPrefs.getString("port", null);
_sport = sharedPrefs.getString("port", null);
_user = sharedPrefs.getString("mail", null);
_pass = sharedPrefs.getString("pw", null);

}

public boolean send() throws Exception {
Properties props = _setProperties();

if (!_user.equals("") && !_pass.equals("") && _to.length > 0
&& !_from.equals("") && !_subject.equals("")
&& !_body.equals("")) {

Session session = Session.getInstance(props,
new GMailAuthenticator(_user, _pass));

MimeMessage msg = new MimeMessage(session);





msg.setFrom(new InternetAddress(_from));

InternetAddress[] addressTo = new InternetAddress[_to.length];
for (int i = 0; i < _to.length; i++) {
addressTo[i] = new InternetAddress(_to[i]);
}
msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);

msg.setSubject(_subject);
msg.setSentDate(new Date());

// setup message body
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(_body);
_multipart.addBodyPart(messageBodyPart);


// Put parts in message
msg.setContent(_multipart);

// send email
Transport.send(msg);

return true;
} else {
return false;
}
}

最佳答案

发生这种情况是因为邮件是异步协议(protocol)。基本上,邮件不会传递到目的地,它只是传递到本地邮件服务器,该服务器会对其进行智能处理。最终。几个小时后。

如果出现问题,邮件的发件人将收到一封包含错误消息的邮件,因此您最好确保地址正确。

这意味着仅在稍后时间检查接收者地址。没有办法验证它们。您可以进行一些简单的模式匹配验证来检查损坏的域名,但几个月后,当新的顶级域名可用并且我获得我的 digulla@home 电子邮件地址时,该验证将停止工作。

关于JavaMail,如果接收者邮件错误,不会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com