android客户端发送mail,不依靠服务器
来源:互联网 发布:java platform se8 编辑:程序博客网 时间:2024/04/29 10:56
首先需要三个jar包,和java发送mail不一样
http://download.csdn.net/detail/storm1314888/6935623
http://download.csdn.net/detail/storm1314888/6935631
http://download.csdn.net/detail/storm1314888/6935641
package com.util.mail;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
*
*
* <p>Title: Java发送邮件测试类 /p>
*
* <p>Description: 示例 业务类</p>
*
* <p>Copyright: Copyright (coffee) 2012</p>
*
*
* @author dml@2012-12-17
* @version 1.0
*/
/****************************************************************
* 对QQ邮箱使用(对于其他的使用类似的你应该也会更改了) 首先把QQ邮箱的POP3 SMTP打开 首先确定你的网络正常、非代理
* 【确定你的QQ邮箱开启了SMTP】!!!! 如果没有开启,那么这样设置下 设置->账户 --在下面-- 把这个选上 [√]SMTP发信后保存到服务器
****************************************************************/
public class JavaMail {
// 设置服务器
private static String KEY_SMTP = ReadProperties.read( "KEY_SMTP");
private static String VALUE_SMTP = ReadProperties.read("VALUE_SMTP");
// 服务器验证
private static String KEY_PROPS = ReadProperties.read( "KEY_PROPS");
private static boolean VALUE_PROPS = Boolean.getBoolean(ReadProperties
.read("VALUE_PROPS"));
// 发件人用户名、密码
private String SEND_USER = ReadProperties.read( "SEND_USER");
private String SEND_UNAME= ReadProperties.read( "SEND_USER");
private String SEND_PWD= ReadProperties.read( "SEND_PWD");
public String getSEND_USER() {
return SEND_USER;
}
public void setSEND_USER(String sEND_USER) {
SEND_USER = sEND_USER;
}
public String getSEND_UNAME() {
return SEND_UNAME;
}
public void setSEND_UNAME(String sEND_UNAME) {
SEND_UNAME = sEND_UNAME;
}
public String getSEND_PWD() {
return SEND_PWD;
}
public void setSEND_PWD(String sEND_PWD) {
SEND_PWD = sEND_PWD;
}
// 建立会话
private MimeMessage message;
private Session s;
/*
* 初始化方法
*/
public JavaMail() {
Properties props = System.getProperties();
props.setProperty(KEY_SMTP, VALUE_SMTP);
props.put(KEY_PROPS, VALUE_PROPS);
s = Session.getInstance(props);
/* s.setDebug(true);开启后有调试信息 */
message = new MimeMessage(s);
}
/**
* 发送邮件
*
* @param headName
* 邮件头文件名
* @param sendHtml
* 邮件内容
* @param receiveUser
* 收件人地址
*/
public boolean doSendHtmlEmail(String email_head, String email_content,
String email_reciver) {
try {
// 发件人
InternetAddress from = new InternetAddress(SEND_USER);
message.setFrom(from);
// 收件人
InternetAddress to = new InternetAddress(email_reciver);
message.setRecipient(Message.RecipientType.TO, to);
// 邮件标题
message.setSubject(email_head);
String content = email_content.toString();
// 邮件内容,也可以使纯文本"text/plain"
message.setContent(content, "text/html;charset=GBK");
message.saveChanges();
Transport transport = s.getTransport("smtp");
// smtp验证,就是你用来发邮件的邮箱用户名密码
transport.connect(VALUE_SMTP, SEND_UNAME, SEND_PWD);
// 发送
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
return false;
}
}
package com.util.mail;
import java.util.Properties;
public class ReadProperties {
/**
* a static function use to read the statement by file name and key
*
* @param sourceName
* file's name
* @param key
* statement key
* @return
*/
public static String read( String key) {
try {
Class<ReadProperties> c=ReadProperties.class;
Properties properties=new Properties();
properties.load(c.getResourceAsStream("/email.properties"));
return properties.getProperty(key);
} catch (Exception e) {
return null;
}
}
}
package com.matrix.hrlead;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import com.util.mail.JavaMail;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;
public class Details extends Activity implements OnDateSetListener{
public static final int EMAIL = 0;
Button showdate , Bdefine , Bemail;
EditText Ecompany , Eaddress, EContactname , EContactemail, EContactphone;
CheckBox CQA ,CToolsandlicenses ,CDevelopment ,CCrosslead ,COther ,CUrgent, CExclusive;
String selectedDate = "";
String html="";
Handler handler= new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case EMAIL:
Boolean boolean1=(Boolean)msg.obj;
if(boolean1)
Toast.makeText(Details.this, "success!", Toast.LENGTH_LONG).show();
else {
Toast.makeText(Details.this, "fail!", Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
//Button
showdate = (Button)findViewById(R.id.Bshowdate);
Bdefine = (Button)findViewById(R.id.Bdefine);
Bemail = (Button)findViewById(R.id.Bemail);
//EdiText
Ecompany = (EditText)findViewById(R.id.Ecompany);
Eaddress = (EditText)findViewById(R.id.Eaddress);
EContactname = (EditText)findViewById(R.id.EContactname);
EContactemail = (EditText)findViewById(R.id.EContactemail);
EContactphone = (EditText)findViewById(R.id.EContactphone);
//CheckBox
CQA=(CheckBox)findViewById(R.id.CQA);
CToolsandlicenses=(CheckBox)findViewById(R.id.CToolsandlicenses);
CDevelopment=(CheckBox)findViewById(R.id.CDevelopment);
CCrosslead=(CheckBox)findViewById(R.id.CCrosslead);
COther=(CheckBox)findViewById(R.id.COther);
CUrgent=(CheckBox)findViewById(R.id.CUrgent);
CExclusive=(CheckBox)findViewById(R.id.CExclusive);
Calendar calendar = Calendar.getInstance();
selectedDate = String.valueOf(calendar.get(Calendar.YEAR))+"-"+String.valueOf(calendar.get(Calendar.MONTH))+"-"+calendar.get(Calendar.DATE);
showdate.setText(selectedDate);
showdate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Calendar d = Calendar.getInstance(Locale.CHINA);
Date myDate=new Date();
d.setTime(myDate);
int year=d.get(Calendar.YEAR);
int month=d.get(Calendar.MONTH);
int day=d.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dlg=new DatePickerDialog(Details.this,Details.this,year,month,day);
dlg.show();
}
});
Bdefine.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Details.this,Profiles.class);
startActivity(intent);
}
});
Bemail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new SendEmail()).start();
}
});
}
//DatePickerDialog的回调函数
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth){
selectedDate = Integer.toString(year) + "-" +Integer.toString(monthOfYear) + "-" +Integer.toString(dayOfMonth);
showdate.setText("Start working date:"+selectedDate);
}
//发送邮件必须在子线程中进行 不然会报错
private class SendEmail implements Runnable{
@Override
public void run() {
//*************************
String company = Ecompany.getText().toString().trim();
String address = Eaddress.getText().toString().trim();
String contactname = EContactname.getText().toString().trim();
String contactemail = EContactemail.getText().toString().trim();
String contactphone = EContactphone.getText().toString().trim();
String QA ="";
String Toolsandlicenses ="";
String Development ="";
String Crosslead ="";
String Other ="";
String Urgent ="";
String Exclusive ="";
String Services="";
if(CQA.isChecked()){
Services = Services+"QA";
QA="QA";
}
if(CToolsandlicenses.isChecked()){
Services = Services+" Tools and licenses";
Toolsandlicenses="Tools and licenses";
}
if(CDevelopment.isChecked()){
Services = Services+" Development";
Development="Development";
}
if(CCrosslead.isChecked()){
Services = Services+" Crosslead";
Crosslead="Crosslead";
}
if(COther.isChecked()){
Services = Services+"Other";
Other="Other";
}
if(CUrgent.isChecked()){
Urgent="Y";
}
else {
Urgent="N";
}
if(CExclusive.isChecked()){
Exclusive="Y";
}
else {
Exclusive="N";
}
html = "<body>company name :"+company+"<br />"
+ "Login name :<br />"
+ "Urgent :"+"Ivan zhang"+"<br />"
+ "Service provider:<matrix global/ TACT><br />"
+ "Company name:"+company+"<br />"
+ "Address:"+address+"<address><br />"
+ "Contact name:"+contactname+"<br />"
+ "Contact email:"+contactemail+"<br />"
+ "Contact phone:"+contactphone+"<br />"
+ "Services:"+Services+"<br />"
+ "Start working date: "+selectedDate+"<dd/mm/yy><br />"
+ "Urgent: "+Urgent+"<br />"
+ "Exclusive: "+Exclusive+"<br />"
+ "Kind regards,<br />"
+ "<Account manager C "+"Ivan zhang"+"><br />"
+ "</body>";
//**************************
// TODO Auto-generated method stub
JavaMail javaMail = new JavaMail();
Boolean b=javaMail.doSendHtmlEmail("Change Password",html, "Ivan.Zhang@matrix-global.com.cn");
Message message=new Message(); //和主线程通信
message.what=EMAIL;
message.obj=b;
handler.sendMessage(message);
}
}
}
//******************************************************************************界面
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top|center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Details">
<!--detail-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Company e.g. matrix"
android:id="@+id/Ecompany"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Address (city) e.g. Tel Aviv"
android:id="@+id/Eaddress"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Contact name"
android:id="@+id/EContactname"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Contact email"
android:inputType="textEmailAddress"
android:id="@+id/EContactemail"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Contact phone"
android:inputType="phone"
android:id="@+id/EContactphone"
/>
</LinearLayout>
<!--checkboxs-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical">
<TextView
android:gravity="left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Services"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal">
<CheckBox
android:id="@+id/CQA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="QA"/>
<CheckBox
android:id="@+id/CToolsandlicenses"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tools and licenses"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal">
<CheckBox
android:id="@+id/CDevelopment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Development"/>
<CheckBox
android:id="@+id/CCrosslead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cross lead"/>
</LinearLayout>
<CheckBox
android:id="@+id/COther"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Other"/>
</LinearLayout>
<!--date-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal">
<Button
android:id="@+id/Bshowdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="date"
/>
</LinearLayout>
<!-- checkbox2 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal">
<CheckBox
android:id="@+id/CUrgent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Urgent"/>
<CheckBox
android:id="@+id/CExclusive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exclusive"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/Bdefine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Define details"
/>
<Button
android:id="@+id/Bemail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Emaill"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>
//properties文件,放在src目录下
KEY_SMTP=mail.smtp.host
VALUE_SMTP=smtp.126.com
KEY_PROPS=mail.smtp.auth
VALUE_PROPS=true
SEND_USER=darrenwu1990@126.com
SEND_UNAME=darrenwu1990@126.com
SEND_PWD=199010414
HR=hadarfo@matrix.co.il
- android客户端发送mail,不依靠服务器
- Android Studio内配置和使用OpenCV3.x(不依靠Manager)
- “不依靠个别开发高手”的误解
- 全局的AlertDialog,不依靠activity
- Android 发送邮件mail
- android客户端发送XML数据至服务器
- android 发送e-mail实例
- 不依靠MDK界面实现调用ARMCC编译器实现编译
- python-mail腾讯邮箱服务器发送邮件
- Android客户端通过GET和POST向服务器发送数据
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- 使用Telnet发送E-mail的脚本客户端
- flask:使用flask-mail客户端访问触发发送邮件
- Android使用Java Mail发送邮件
- Android 使用Java Mail发送邮件
- 如何在Android上发送E-mail
- 使用commom mail smtp 发送email 不同服务器比较。
- James 邮件服务器安装,配置和Java Mail发送程序
- 三星Galaxy S5:home键内置指纹识别传感器、5.25寸2K屏幕
- unix/linux命令“ls -l”选项输出结果详解
- spring security 3.1.0 控制用户重复登陆
- tomcat部署web方式
- Codeforces Round #230 (Div. 1)
- android客户端发送mail,不依靠服务器
- Qt信号和槽的个人总结
- 显示文件目录
- 浏览器中的BOM和DOM
- UINT32_T
- Mac下Chrome快捷键大全
- VS2010 WEBBROWSER控件探索(一)
- eCos中的同步原语简要
- My WiFi