问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用android手机发送袋附件的邮件

发布网友 发布时间:2022-05-06 00:12

我来回答

1个回答

热心网友 时间:2022-06-28 09:10

在android上发送邮件方式:
第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有点是比较方便
不需要写很多代码,但是不是很灵活。
第二种:基于JMail实现,可以很灵活的自己设置各种属性,不需要GMail帐号
在第二种方式的实现之前,看一下JMail对EMail结构的划分:

基于SMTP协议发送EMail,所以客户端必须要知道SMTP的主机
腾讯邮件的SMTP主机为:stmp.qq.com端口为465基于SSL协议
最后我做了一个简单的封装,把发送文本加图像附件的功能做出了
一个单独的Class,只要调用一下即可完成:

[java] view plaincopy
package com.gloomyfish.jmail.demo;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Multipart;
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 EMailSender {

private String host;
private String port;
private String userName;
private String password;
private String[] images;

public String[] getImagePath() {
return images;
}

public void setImagePath(String[] imagePath) {
this.images = imagePath;
}

public EMailSender(String host, String port, String userName, String password)
{
this.host = host;
this.port = port;
this.userName = userName;
this.password = password;
}

public void sendEmail(String subject, String recepits, String sender, String content)
{
Properties props = new Properties();
props.put("mail.smtp.host", host); //设置smtp的服务器地址
// props.put("mail.smtp.starttls.enable", "true");
// props.put("mail.smtp.port", port); // 设置端口
// props.put("mail.smtp.auth", "true"); //设置smtp服务器要身份验证。

props.put("mail.smtp.socketFactory.port", port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", port);

// 返回授权Base64编码
PopupAuthenticator auth = new PopupAuthenticator(userName, password);
// 获取会话对象
Session session = Session.getInstance(props, auth);
// 设置为DEBUG模式
session.setDebug(true);

// 邮件内容对象组装
MimeMessage message = new MimeMessage(session);
try
{
Address addressFrom = new InternetAddress(sender, "Jia Zhi Gang");
Address addressTo = new InternetAddress(recepits, "My QQ E-Mail");
message.setSubject(subject);
message.setSentDate(new Date());
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO,addressTo);

// 邮件文本/HTML内容
Multipart multipart = new MimeMultipart();
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(content, "text/html");
multipart.addBodyPart(messageBodyPart);

// 添加邮件附件
if (images != null && images.length > 0) {
for (String filePath : images) {
MimeBodyPart attachPart = new MimeBodyPart();
DataSource source = new FileDataSource(filePath);
attachPart.setDataHandler(new DataHandler(source));
attachPart.setFileName(filePath);
multipart.addBodyPart(attachPart);
}
}

// 保存邮件内容
message.setContent(multipart);

// 获取SMTP协议客户端对象,连接到指定SMPT服务器
Transport transport = session.getTransport("smtp");
transport.connect(host, Integer.parseInt(port), userName, password);
System.out.println("connet it success!!!!");

// 发送邮件到SMTP服务器
Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );
Transport.send(message);
System.out.println("send it success!!!!");

// 关闭连接
transport.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public String getPort() {
return port;
}

public void setPort(String port) {
this.port = port;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

用户授权类:

[java] view plaincopy
package com.gloomyfish.jmail.demo;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

class PopupAuthenticator extends Authenticator {
private String userName;
private String password;
public PopupAuthenticator(String userName, String password)
{
this.userName = userName;
this.password = password;
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小米平板6Max没有网络怎么办 ...wifi和4G网络我都试过都现实吗没有网络。刚买的是正品没有刷机_百度... 2023年淘宝双11招商规则 淘宝国庆狂欢季招商规则及玩法 淘宝年货买不停招商规则 淘宝超来电活动招商规则 ZIP转换成RAR怎么转换? 衢州醉根艺品有限公司怎么样? 徐谷青主要业绩 徐谷青人物介绍 本人男现在早上洗脸后脸上怎么会起皮,用什么护肤品好? 男士脸上易起皮应选用什么护肤品 红米note3WiFi链接不稳定怎么解决 Word中给特定格式应用上标题样式 红米note3全网通 怎么开wifi增强 红米note3WiFi问题解决了吗? 查找替换快速格式化标题 红米note3如何增加wifi接收强度 红米Note3手机已经连上无线网了,但是网速非常的慢,自己家的无线网。怎么回事? 红米note3WIFI特别弱能解决吗 红米note3wifi速度变慢怎么办 红米note3wifi上网速度太慢了,怎么办 为什么我红米NOTE3连WIFI的网速超慢,求解 红米note3怎么增强wifi 梦见在家里被狼咬亲人帮我拉开狼 梦到家人受狼攻击最后被化解 梦见家里进了一直白色的狼 好像要咬我 重机和兄弟的缝纫机哪个好点? 重机家用电动缝纫机 怎么样 oracle 10g SQL 存储过程求大神解救!在线等!! 社保卡里的钱能在外省用吗? 广州社保卡里面的钱在其他城市可以用吗 社保卡里的钱能在外省用吗 多线程调用oracle存储过程是否并发执行? 怀孕期肚子坐下跳动正常吗 怀孕六个月,为什么最近肚子总是一跳一跳的动,像是心跳 腾达路由器 怎么取消禁止上网? 路由器禁用手机后怎么解除? 浦发信用卡额度2000元,太少,不想激活了,我的农行和工商都是10000多, 为什么腾达路由器 禁止上网后就解除不了了 怎么办 办下来,一张浦发信用卡,就1000额度,激活吗 浦发信用卡为啥额度这么低啊,金卡2000白金卡才10000啊 路由器禁用手机后怎么解除 oppor7s能不能同时上两个 浦发信用卡额度10000没有用过激活成了8000 oppo r7s可以同时登两个吗 oppo r7s双模手机能登录使用两个吗? 办张10000额度的信用卡,激活以后就直接能刷了吗 oppoR7能安装两个微信软件吗 谁能告诉我OPPOr7能装两个微信吗?