このコードニペットは、メールを送信します:
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 ブロックに実行されます。受信者が正しくないのに、なぜこれが起こったのですか。誰か助けてくれませんか?
メール設定は 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;
}
ユーザーがテキスト フィールドに電子メール アドレスを入力して [OK] をクリックすると、次のことが起こります。
if (isValidEmailAddress(mail))
editor.putString("Tomail", mail);
else
Toast.makeText(getApplicationContext(), "Invalid", Toast.LENGHT_LONG).show();
これは、メールに a が含まれているかどうかのみをチェックし@
、そのため有効です。
私の送信方法では:
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;
}
}