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

0 0
原创粉丝点击