我正在提示我的应用程序用户输入电子邮件凭据。验证用户电子邮件身份验证
用户插入电子邮件并通过后,我想验证帐户。
我正在使用javax.mail。有什么方法可以验证帐户吗?只确保凭据确实有效 - 否则我想显示一个无效的用户并传递消息。
也许某种方式来进行:
Transport.send(message);
,检查认证例外,而没有发送任何。
我正在提示我的应用程序用户输入电子邮件凭据。验证用户电子邮件身份验证
用户插入电子邮件并通过后,我想验证帐户。
我正在使用javax.mail。有什么方法可以验证帐户吗?只确保凭据确实有效 - 否则我想显示一个无效的用户并传递消息。
也许某种方式来进行:
Transport.send(message);
,检查认证例外,而没有发送任何。
您可以创建真实性检查类似(只是一个例子,远离完成):
String email = "[email protected]mail.com";
if (!email.contains("@") || !email.contains(".") || !(email.lastIndexOf(".") > email.indexOf("@")))
showError();
嗨,你可以做这样的事情
public final static boolean validateEmail(CharSequence givenSeq) {
if (givenSeq!= null) {
return android.util.Patterns.EMAIL_ADDRESS.matcher(givenSeq).matches();
} else {
return false;
}
}
试试这个:
/**
* validate your email address format. [email protected]
*/
public boolean emailValidator(String email)
{
Pattern pattern;
Matcher matcher;
final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
pattern = Pattern.compile(EMAIL_PATTERN);
matcher = pattern.matcher(email);
return matcher.matches();
}
您可以创建传输对象并管理连接以验证用户名/密码是否有效。
Address[] to = InternetAddress.parse("[email protected]");
Transport t = session.getTransport(to[0]);
t.connect();
t.close();
如果您想验证用户名/密码和信封,只需创建一个包含所有信封信息但没有内容的信息。或者创建一个具有恶意writeTo(OutputStream)方法的MimeMessage的子类。
MimeMessage msg = new MimeMessage(session);
Address[] from = InternetAddress.parse("[email protected]");
Address[] to = InternetAddress.parse("[email protected]");
msg.addFrom(from);
msg.setRecipients(Message.RecipientType.TO, to);
ByteArrayOutputStream out = new ByteArrayOutputStream(384);
msg.saveChanges();
try {
msg.writeTo(out);
throw new AssertionError();
} catch (MessagingException | IOException test) {
try {
Transport.send(msg);
throw new AssertionError();
} catch (MessagingException | IOException expect) {
if (!exceptionEqual(test, expect)) {
//Notify the user....
}
}
}
这部作品的原因是,该内容被最后写入,所以如果Transport.send使得它Message.writeTo那么你知道不,你可以登录到邮件服务器的一个疑问。此外,服务器会通知您是否接受信封信息。但是,仅仅因为它接受了信封并不意味着交付将会成功。由于Message.writeTo引发异常,因此不会发送实际的电子邮件消息。