[英]In Android,Email Notification is not working
My Code 我的密码
EmailSendActivity m = new EmailSendActivity("userName", "password");
String[] toArr = { "Recipients"};
m.setTo(toArr);
m.setFrom("abc@gmail.com"); //Same as user email
m.setSubject("Party Booked");
m.setBody("Successsssssssssssssssssssssssss");
try {
//m.addAttachment("/sdcard/filelocation");
if(m.send()) {
Toast.makeText(this, "Sent Email.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Email was not sent.", Toast.LENGTH_LONG).show();
}
} catch(Exception e) {
//Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show();
Log.e("ClaimRegister", "Could not send email.", e);
}
EmailSendActivity EmailSendActivity
public class EmailSendActivity extends javax.mail.Authenticator {
private String _user;
private String _pass;
private String[] _to;
private String _from;
private String _port;
private String _sport;
private String _host;
private String _subject;
private String _body;
private boolean _auth;
private boolean _debuggable;
private Multipart _multipart;
public EmailSendActivity() {
_host = "smtp.gmail.com"; // default smtp server
_port = "465"; // default smtp port
_sport = "465"; // default socketfactory port
_user = ""; // username
_pass = ""; // password
_from = ""; // email sent from
_subject = ""; // email subject
_body = ""; // email body
_debuggable = false; // debug mode on or off - default off
_auth = true; // smtp authentication - default on
_multipart = new MimeMultipart();
// There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added.
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
}
public EmailSendActivity(String user, String pass) {
this();
_user = user;
_pass = pass;
}
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, this);
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);
Log.d("Msg !!!!","msg =" +msg.toString());
// send email
Transport.send(msg);
return true;
} else {
return false;
}
}
public void addAttachment(String filename) throws Exception {
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
_multipart.addBodyPart(messageBodyPart);
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(_user, _pass);
}
private Properties _setProperties() {
Properties props = new Properties();
props.put("mail.smtp.host", _host);
if(_debuggable) {
props.put("mail.debug", "true");
}
if(_auth) {
props.put("mail.smtp.auth", "true");
}
props.put("mail.smtp.port", _port);
props.put("mail.smtp.socketFactory.port", _sport);
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
return props;
}
// the getters and setters
public String getBody() {
return _body;
}
public void setBody(String _body) {
this._body = _body;
}
public void setTo(String[] toArr) {
this._to = toArr;
}
public void setFrom(String string) {
this._from = string;
}
public void setSubject(String string) {
this._subject = string;
}
}
Error 错误
05-23 03:22:28.494: E/ClaimRegister(2107): Could not send email.
05-23 03:22:28.494: E/ClaimRegister(2107): android.os.NetworkOnMainThreadException
05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
05-23 03:22:28.494: E/ClaimRegister(2107): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
05-23 03:22:28.494: E/ClaimRegister(2107): at java.net.InetAddress.getLocalHost(InetAddress.java:365)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.InternetAddress.getLocalHostName(InternetAddress.java:568)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.InternetAddress._getLocalAddress(InternetAddress.java:547)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:518)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2163)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2192)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2151)
05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.Transport.send(Transport.java:123)
05-23 03:22:28.494: E/ClaimRegister(2107): at com.clip.android.EmailSendActivity.send(EmailSendActivity.java:112)
05-23 03:22:28.494: E/ClaimRegister(2107): at com.clip.android.ClaimRegister.submit(ClaimRegister.java:257)
05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invokeNative(Native Method)
05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invoke(Method.java:515)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.view.View$1.onClick(View.java:3818)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.view.View.performClick(View.java:4438)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.view.View$PerformClick.run(View.java:18422)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.Handler.handleCallback(Handler.java:733)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.Handler.dispatchMessage(Handler.java:95)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.Looper.loop(Looper.java:136)
05-23 03:22:28.494: E/ClaimRegister(2107): at android.app.ActivityThread.main(ActivityThread.java:5001)
05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invokeNative(Native Method)
05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invoke(Method.java:515)
05-23 03:22:28.494: E/ClaimRegister(2107): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-23 03:22:28.494: E/ClaimRegister(2107): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-23 03:22:28.494: E/ClaimRegister(2107): at dalvik.system.NativeStart.main(Native Method)
I cannot send email, it always enters the catch block..... I have javax.mail.jar,activation.jar,joda-time.jar 我无法发送电子邮件,它总是进入catch块.....我有javax.mail.jar,activation.jar,joda-time.jar
Please help me to resolve this issue... I need to send email through my app programatically Thank you in advance 请帮助我解决此问题...我需要以编程方式通过我的应用发送电子邮件预先感谢您
Local address contains control or whitespace in string ``Sender Email'' 本地地址在字符串``Sender Email''中包含控件或空格
Look at this line. 看这行。 Your email contains whitespace.
您的电子邮件包含空格。 Try to put validation on email.
尝试在电子邮件上进行验证。 This is built in validation.
这是内置的验证。 You can search for other ways too.
您也可以搜索其他方式。
public final static boolean isValidEmail(CharSequence target) {
if (target == null) {
return false;
} else {
return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
}
and for your code try to do this : 并为您的代码尝试执行此操作:
m.setFrom("senderEmail");
This is how you send email in android : 这是您在android中发送电子邮件的方式:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT , "body of email");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.