2014-04-07 95 views
0

我正在提示我的应用程序用户输入电子邮件凭据。验证用户电子邮件身份验证

用户插入电子邮件并通过后,我想验证帐户。

我正在使用javax.mail。有什么方法可以验证帐户吗?只确保凭据确实有效 - 否则我想显示一个无效的用户并传递消息。

也许某种方式来进行:

Transport.send(message); 

,检查认证例外,而没有发送任何。

回答

0

您可以创建真实性检查类似(只是一个例子,远离完成):

String email = "[email protected]mail.com"; 

if (!email.contains("@") || !email.contains(".") || !(email.lastIndexOf(".") > email.indexOf("@"))) 
    showError(); 
1

嗨,你可以做这样的事情

public final static boolean validateEmail(CharSequence givenSeq) { 
    if (givenSeq!= null) { 
     return android.util.Patterns.EMAIL_ADDRESS.matcher(givenSeq).matches(); 
    } else { 
     return false; 
    } 
} 
0

试试这个:

/** 
* 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(); 
} 
0

您可以创建传输对象并管理连接以验证用户名/密码是否有效。

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引发异常,因此不会发送实际的电子邮件消息。

相关问题