我有以下代码尝试在后台发送电子邮件。我已经使用textview来查看异常。但是,虽然textview中没有显示任何内容,但我也无法收到邮件。所以我不确定邮件是否已成功发送。任何人都可以帮助我吗?
根据建议,我修改了我的程序如下:
new Sender.java
public class Sender extends Activity {
Button Send;
TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sender);
Send = (Button) findViewById(R.id.mail);
text = (TextView) findViewById(R.id.textView1);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
Send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new SendMail().execute();
}
});
}
private class SendMail extends AsyncTask<String, Void, String>
{
ProgressDialog pd = null;
String error = null;
Integer result;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd = new ProgressDialog(Sender.this);
pd.setTitle("Uploading");
pd.setMessage("Uploading logs. Please wait");
pd.setCancelable(false);
pd.show();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
MailSender sender = new MailSender("me@gmail.com", "password");
String[] toAddress = {"me@gmail.com"};
sender.setTo(toAddress);
sender.setFrom("me@gmail.com");
sender.setSubject("Test mail");
sender.setBody("This is the mail body");
try {
if(sender.send()) {
System.out.println("Message sent");
result = 1;
} else {
result = 2;
}
} catch (Exception e) {
error = e.getMessage();
Log.e("SendMail", e.getMessage(), e);
}
result = 3;
return null;
}
protected void onPostExecute() {
pd.dismiss();
if(error!=null) {
text.setText(error);
}
if(result==1) {
Toast.makeText(Sender.this,
"Email was sent successfully.", Toast.LENGTH_LONG)
.show();
} else if(result==2) {
Toast.makeText(Sender.this,
"Email was not sent.", Toast.LENGTH_LONG).show();
} else if(result==3) {
Toast.makeText(Sender.this,
"There was a problem sending the email.",
Toast.LENGTH_LONG).show();
}
}
}
}
new MailSender.java
public class MailSender extends Authenticator {
private String user;
private String password;
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 multi;
public MailSender(){
host = "smtp.gmail.com";
port = "465";
sport = "465";
user = "";
password = "";
from = "";
subject = "";
body = "";
debuggable = false;
auth = true;
multi = 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/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 MailSender(String user, String password){
this();
user = user;
password = password;
}
public boolean send() throws Exception {
Properties props = setProperties();
try{
Session session = Session.getInstance(props, this);
session.setDebug(true);
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());
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(body);
multi.addBodyPart(messageBodyPart);
msg.setContent(multi);
Transport transport = session.getTransport("smtps");
transport.connect(host, 465, user, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
return true;
} catch (Exception e) {
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);
multi.addBodyPart(messageBodyPart);
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
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;
}
public void setTo(String[] toAddress) {
this.to = toAddress;
}
public void setFrom(String fromAddress) {
this.from = fromAddress;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setBody(String body) {
this.body = body;
}
}
我更改了程序后,当我点击按钮时,它停止在执行前状态,显示“正在上传日志。请稍候”。邮件无法发送出去。
错误日志:
08-14 16:26:29.872: I/System.out(22439): DEBUG: setDebug: JavaMail version 1.4.1
08-14 16:26:29.888: I/System.out(22439): DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc.,1.4.1]
08-14 16:26:29.896: I/System.out(22439): DEBUG SMTP: useEhlo true, useAuth false
08-14 16:26:29.896: I/System.out(22439): DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
08-14 16:26:30.568: I/System.out(22439): 220 mx.google.com ESMTP nq6sm593334pbc.56
08-14 16:26:30.568: I/System.out(22439): DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
08-14 16:26:30.568: I/System.out(22439): EHLO localhost
08-14 16:26:30.716: I/System.out(22439): 250-mx.google.com at your service, [202.155.209.250]
08-14 16:26:30.716: I/System.out(22439): 250-SIZE 35882577
08-14 16:26:30.716: I/System.out(22439): 250-8BITMIME
08-14 16:26:30.716: I/System.out(22439): 250-AUTH LOGIN PLAIN XOAUTH
08-14 16:26:30.716: I/System.out(22439): 250 ENHANCEDSTATUSCODES
08-14 16:26:30.716: I/System.out(22439): DEBUG SMTP: Found extension "SIZE", arg "35882577"
08-14 16:26:30.716: I/System.out(22439): DEBUG SMTP: Found extension "8BITMIME", arg ""
08-14 16:26:30.716: I/System.out(22439): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
08-14 16:26:30.716: I/System.out(22439): DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
08-14 16:26:30.716: I/System.out(22439): DEBUG SMTP: Attempt to authenticate
08-14 16:26:30.724: I/System.out(22439): AUTH LOGIN
08-14 16:26:30.872: I/System.out(22439): 334 VXNlcm5hbWU6
08-14 16:26:30.872: I/System.out(22439):
08-14 16:26:31.021: I/System.out(22439): 334 UGFzc3dvcmQ6
08-14 16:26:31.021: I/System.out(22439):
08-14 16:26:31.169: I/System.out(22439): 334 UGFzc3dvcmQ6
08-14 16:26:31.177: I/System.out(22439): DEBUG SMTP: useEhlo true, useAuth false
08-14 16:26:31.177: I/System.out(22439): DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
08-14 16:26:31.552: D/dalvikvm(22439): GC_CONCURRENT freed 341K, 4% free 11097K/11527K, paused 13ms+3ms, total 37ms
08-14 16:26:31.794: I/System.out(22439): 220 mx.google.com ESMTP st6sm593199pbc.58
08-14 16:26:31.794: I/System.out(22439): DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
08-14 16:26:31.794: I/System.out(22439): EHLO localhost
08-14 16:26:31.943: I/System.out(22439): 250-mx.google.com at your service, [202.155.209.250]
08-14 16:26:31.943: I/System.out(22439): 250-SIZE 35882577
08-14 16:26:31.943: I/System.out(22439): 250-8BITMIME
08-14 16:26:31.943: I/System.out(22439): 250-AUTH LOGIN PLAIN XOAUTH
08-14 16:26:31.943: I/System.out(22439): 250 ENHANCEDSTATUSCODES
08-14 16:26:31.950: I/System.out(22439): DEBUG SMTP: Found extension "SIZE", arg "35882577"
08-14 16:26:31.950: I/System.out(22439): DEBUG SMTP: Found extension "8BITMIME", arg ""
08-14 16:26:31.950: I/System.out(22439): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
08-14 16:26:31.950: I/System.out(22439): DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
08-14 16:26:31.950: I/System.out(22439): DEBUG SMTP: Attempt to authenticate
08-14 16:26:31.950: I/System.out(22439): AUTH LOGIN
08-14 16:26:32.099: I/System.out(22439): 334 VXNlcm5hbWU6
08-14 16:26:32.099: I/System.out(22439):
08-14 16:26:32.247: I/System.out(22439): 334 UGFzc3dvcmQ6
08-14 16:26:32.247: I/System.out(22439):
08-14 16:26:32.403: I/System.out(22439): 334 UGFzc3dvcmQ6
08-14 16:27:00.200: I/Choreographer(22439): Skipped 35 frames! The application may be doing too much work on its main thread.
由于它不起作用,所以我尝试隐藏函数onpreexecute,但没有任何变化,邮件无法发送,这里是错误日志中的消息:
08-14 16:31:18.958: I/System.out(22759): DEBUG: setDebug: JavaMail version 1.4.1
08-14 16:31:18.974: I/System.out(22759): DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc.,1.4.1]
08-14 16:31:18.974: I/System.out(22759): DEBUG SMTP: useEhlo true, useAuth false
08-14 16:31:18.974: I/System.out(22759): DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
08-14 16:31:19.739: I/System.out(22759): 220 mx.google.com ESMTP og7sm597805pbb.62
08-14 16:31:19.739: I/System.out(22759): DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
08-14 16:31:19.739: I/System.out(22759): EHLO localhost
08-14 16:31:19.888: I/System.out(22759): 250-mx.google.com at your service, [202.155.209.250]
08-14 16:31:19.888: I/System.out(22759): 250-SIZE 35882577
08-14 16:31:19.888: I/System.out(22759): 250-8BITMIME
08-14 16:31:19.888: I/System.out(22759): 250-AUTH LOGIN PLAIN XOAUTH
08-14 16:31:19.888: I/System.out(22759): 250 ENHANCEDSTATUSCODES
08-14 16:31:19.888: I/System.out(22759): DEBUG SMTP: Found extension "SIZE", arg "35882577"
08-14 16:31:19.888: I/System.out(22759): DEBUG SMTP: Found extension "8BITMIME", arg ""
08-14 16:31:19.888: I/System.out(22759): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
08-14 16:31:19.888: I/System.out(22759): DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
08-14 16:31:19.888: I/System.out(22759): DEBUG SMTP: Attempt to authenticate
08-14 16:31:19.896: I/System.out(22759): AUTH LOGIN
08-14 16:31:20.044: I/System.out(22759): 334 VXNlcm5hbWU6
08-14 16:31:20.044: I/System.out(22759):
08-14 16:31:20.185: I/System.out(22759): 334 UGFzc3dvcmQ6
08-14 16:31:20.185: I/System.out(22759):
08-14 16:31:20.341: I/System.out(22759): 334 UGFzc3dvcmQ6
08-14 16:31:20.341: I/System.out(22759): DEBUG SMTP: useEhlo true, useAuth false
08-14 16:31:20.341: I/System.out(22759): DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true
08-14 16:31:20.786: I/System.out(22759): 220 mx.google.com ESMTP og7sm597845pbb.62
08-14 16:31:20.786: I/System.out(22759): DEBUG SMTP: connected to host "smtp.gmail.com", port: 465
08-14 16:31:20.786: I/System.out(22759): EHLO localhost
08-14 16:31:20.935: I/System.out(22759): 250-mx.google.com at your service, [202.155.209.250]
08-14 16:31:20.935: I/System.out(22759): 250-SIZE 35882577
08-14 16:31:20.935: I/System.out(22759): 250-8BITMIME
08-14 16:31:20.935: I/System.out(22759): 250-AUTH LOGIN PLAIN XOAUTH
08-14 16:31:20.935: I/System.out(22759): 250 ENHANCEDSTATUSCODES
08-14 16:31:20.943: I/System.out(22759): DEBUG SMTP: Found extension "SIZE", arg "35882577"
08-14 16:31:20.943: I/System.out(22759): DEBUG SMTP: Found extension "8BITMIME", arg ""
08-14 16:31:20.943: I/System.out(22759): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
08-14 16:31:20.943: I/System.out(22759): DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
08-14 16:31:20.943: I/System.out(22759): DEBUG SMTP: Attempt to authenticate
08-14 16:31:20.943: I/System.out(22759): AUTH LOGIN
08-14 16:31:21.091: I/System.out(22759): 334 VXNlcm5hbWU6
08-14 16:31:21.091: I/System.out(22759):
08-14 16:31:21.239: I/System.out(22759): 334 UGFzc3dvcmQ6
08-14 16:31:21.239: I/System.out(22759):
08-14 16:31:21.380: I/System.out(22759): 334 UGFzc3dvcmQ6
08-14 16:31:49.357: W/IInputConnectionWrapper(22759): clearMetaKeyStates on inactive InputConnection
我已经在AsyncTask中执行了send操作,请问为什么它仍然不起作用?
答案 0 :(得分:6)
如日志所示,您从主UI线程调用网络相关任务。您必须使用AsyncTask
进行这些通信。并通过执行
StrictMode
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
另请参阅此帖子中有关usage of JavaMail API的答案。
编辑:在此添加内联代码 包com.max.mactest;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class Sender extends Activity {
Button Send;
TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_login);
Send = (Button) findViewById(R.id.cmdDoLogin);
text = (TextView) findViewById(R.id.textView2);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
Send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new SendMail().execute();
}
});
}
private class SendMail extends AsyncTask<String, Void, Integer>
{
ProgressDialog pd = null;
String error = null;
Integer result;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd = new ProgressDialog(Sender.this);
pd.setTitle("Sending Mail");
pd.setMessage("Please wait...");
pd.setCancelable(false);
pd.show();
}
@Override
protected Integer doInBackground(String... params) {
// TODO Auto-generated method stub
MailSender sender = new MailSender("yourmail@gmail.com", "yourpassword");
sender.setTo(new String[]{"tomail@gmail.com"});
sender.setFrom("yourmail@gmail.com");
sender.setSubject("Test mail");
sender.setBody("This is the mail body");
try {
if(sender.send()) {
System.out.println("Message sent");
return 1;
} else {
return 2;
}
} catch (Exception e) {
error = e.getMessage();
Log.e("SendMail", e.getMessage(), e);
}
return 3;
}
protected void onPostExecute(Integer result) {
pd.dismiss();
if(error!=null) {
text.setText(error);
}
if(result==1) {
Toast.makeText(Sender.this,
"Email was sent successfully.", Toast.LENGTH_LONG)
.show();
} else if(result==2) {
Toast.makeText(Sender.this,
"Email was not sent.", Toast.LENGTH_LONG).show();
} else if(result==3) {
Toast.makeText(Sender.this,
"There was a problem sending the email.",
Toast.LENGTH_LONG).show();
}
}
}
}
已更新MailSender
import java.util.Date;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class MailSender extends Authenticator {
private String user;
private String password;
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 multi;
public MailSender(){
host = "smtp.gmail.com";
port = "465";
sport = "465";
user = "";
password = "";
from = "";
subject = "";
body = "";
debuggable = false;
auth = true;
multi = 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/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 MailSender(String user, String password){
this();
this.user = user;
this.password = password;
}
public boolean send() throws Exception {
Properties props = setProperties();
try{
Session session = Session.getInstance(props, this);
session.setDebug(true);
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());
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(body);
multi.addBodyPart(messageBodyPart);
msg.setContent(multi);
Transport transport = session.getTransport("smtps");
transport.connect(host, 465, user, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
return true;
} catch (Exception e) {
e.printStackTrace();
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);
multi.addBodyPart(messageBodyPart);
}
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
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;
}
public void setTo(String[] toAddress) {
this.to = toAddress;
}
public void setFrom(String fromAddress) {
this.from = fromAddress;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setBody(String body) {
this.body = body;
}
}
答案 1 :(得分:2)
在您的Android项目的以下链接中添加3个罐子(右击项目 - 添加外部罐子)
Click Here - How to add External JARs
运行项目并检查收件人邮件帐户中的邮件。干杯!!
希望这会有所帮助..
答案 2 :(得分:2)
检查我的工作Email Application
。我把它Here
在此之前,请确认您已添加
清单中的 <uses-permission android:name="android.permission.INTERNET"/>
答案 3 :(得分:2)
我猜您正在使用API级别9 +
您需要了解StrictMode
。
在您的情况下,您试图阻止主UI线程上的网络API,这就是错误发生的原因。
作为解决方案,您可以在onCreate()
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
另请阅读AsyncTask
并使用它来执行您在主线程上执行的任务。
答案 4 :(得分:0)
对于NetworkOnMainThreadException,您需要使用AsyncTask来执行网络活动。为此,您可以尝试查看以下代码。我没有检查过,也许你需要在代码中进行一些调整。
首先为AsyncTask创建一个类,如:
private class SendMail extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
MailSender sender = new MailSender("me@gmail.com", "password");
sender.sendMail("Testing",
"This is a test mail",
"me@gmail.com",
"me@gmail.com");
} catch (Exception e) {
text.setText(e.getMessage());
Log.e("SendMail", e.getMessage(), e);
}
return null;
}
}
现在,您只需在new SendMail().execute()
方法中调用onCreate
即可完成网络活动任务。
答案 5 :(得分:0)
如果您使用异步任务发送电子邮件,请按照此
进行操作private class DownloadImageTask extends AsyncTask<String, String, Void> {
int flag=0;
protected Void doInBackground(String... arg0) {
try{
m = new Mail(emailaddress, password);
m.setFrom(emailaddress.trim());
toArr = email.split(",");
for(int i=0;i<toArr.length;i++)
{
// checking all emails entered are correct or not
if (toArr[i].trim().matches(EMAIL_PATTERN))
{
emailflag = true;
}
else
{
emailflag = false;
break;
}
}
m.setTo(toArr);
if(!Subject.equals(""))
{
m.setSubject(txtSubject.getText().toString());
}
else
{
m.setSubject("No Subject");
}
if(!EmailBody.equals(""))
{
m.setBody(txtEmailBody.getText().toString());
}
else
{
m.setBody("No Message");
}
if(!attachefile.equals(""))
{
String[] temp;
temp = attachefile.split("\\*");
if(temp.length>0)
{
for(int i =0; i < temp.length ; i++)
{
m.addAttachment(temp[i]);
}
}
}
if(emailflag && m.send())
{
flag=1;
Intent intent = new Intent(SendEmail.this,SendEmail.class);
startActivity(intent);
}
else
{
flag = 0;
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result)
{
progressDialog.dismiss();
if(flag==1)
{
Toast.makeText(SendEmail.this, "Sent Successfully", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(SendEmail.this, "Failed please give correct email address", Toast.LENGTH_SHORT).show();
}
}
}
这是电子邮件的正则表达式。
private static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";