Android发送Email的两种方法:
方法一:通过Intent调用内置的Gmail发送邮件
优点:简单、方便
缺点:缺少灵活性,只能使用关联的gmail发送邮件
示例代码:
String[] recipients = {"接收方邮件地址", "接收方邮件地址"};
String subject = "邮件标题";
String text = "邮件内容";
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipients);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(intent, "Sending..."));
方法二:使用JavaMail发送邮件
优点:灵活
缺点:复杂,配置麻烦
配置步骤:
-
下载Android版本JavaMail包,additional.jar、mail.jar和activation.jar,下载地址JavaMail-Android
-
在项目与src同一目录级别下,新建文件夹lib,将下载的3个jar包放入该文件夹
-
右键->Properties->Java Build Path->Libraries,选择Add External JARs,找到项目下lib目录的3个jar包
实现步骤:
-
建立与邮件服务器间的会话Session
-
构建邮件消息MINEMessage
-
Transport发送邮件
注意:
AndroidManifest下添加网络权限
配置会话Session的Properties时,值为String型"true"和"false",而不是布尔型
示例代码:
package dyingbleed.iteye;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.util.ByteArrayDataSource;
public class MailSender extends Authenticator {
public static final String host = "smtp.gmail.com";
private final String userName;
private final String password;
private Session session;
public MailSender(String userName, String password) {
this.userName = userName;
this.password = password;
initialize(); //初始化
}
private void initialize() {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", host);
props.put("mail.smtp.auth", true);
session = Session.getDefaultInstance(props, this);
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
/**
* 发送Email
* @param subject 标题
* @param body 内容
* @param sender 发送者
* @param recipients 接收者
* @throws MessagingException
* @throws AddressException
* */
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws AddressException, MessagingException {
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
/*
* 设置MIME消息
* */
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);
if(recipients.contains(",")) {
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
} else {
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
}
Transport.send(message); //发送
}
}
分享到:
相关推荐
此源码是使用javamail发送邮件,可以实现静默发送邮件,可以发送附件资源等。有相应的使用说明,快捷好用
Android发送邮件使用的JavaMail包。包括additional.jar、mail.jar和activation.jar。经测试,能够在程序中正常使用。
可以利用JavaMail收发Gmail邮件,ssl;写得比较详细,
http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-android-app的源码,已实现可发送邮件。
javaMail java 发送email 可以抄送
Android使用JavaMail开发邮箱最新jar包集合
Android用JavaMail发送邮件
android使用javamail发送邮件jar包,可以直接导入到Android studio使用
Android项目开发时需求不让用系统意图发送邮件,可以自定义内容。开始在网上找了很多资料,同时也找到了很多不负责任的代码,这里我也差不多是从网上找来的,经过测试可以发送成功,同时也可以携带附件。如果不能...
用javaMail实现的发送电子邮件Email。
在Android上使用JavaMail发送邮件,可以发送附件。 使用了 mail.jar activation.jar additional.jar
javamail&commons-email 发送邮件的类库
附件是所需要的包文件 博文链接:https://xagcdx.iteye.com/blog/1039425
javamail发送邮件实例 javamail 发送邮件 文本编辑器 kindeditor
利用JavaMail for Android和MailSender实现发送邮件
如何用javamail定时发送邮件
Javamail发送邮件类库,Java发送邮件需要用到该类库
本资源是一个集合发送图片,附件,内容,HTML等得JAVAMAIL代码,并且可以同时发送多个附件多个图片,只需填充VO类,即可直接调用并发送邮件,例子已经写好,只要填充上必要值即可,经163,qq,sina测试没有问题,有...
利用JAVAMAIL实现的发送邮件的小例子