안드로이드 이메일 보내기
2014. 6. 25. 14:35ㆍMobile/Android
반응형
안드로이드 이메일 보내기
jar 파일 3개를 받아 libs 복사 후 추가 등록을 해주셔야 합니다
package com.gpsSendMail.util; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.security.Security; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import android.os.AsyncTask; public class GmailSender extends javax.mail.Authenticator { private String mailhost = "smtp.gmail.com"; private String user; private String password; private Session session; MimeMessage message; static { Security.addProvider(new JSSEProvider()); } public GmailSender(String user, String password) { this.user = user; this.password = password; Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", mailhost); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.quitwait", "false"); session = Session.getDefaultInstance(props, this); } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, password); } public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception { try { message = new MimeMessage(session); DataHandler handler = new DataHandler(new ByteArrayDataSource( body.getBytes(), "text/plain")); message.setSender(new InternetAddress(sender)); message.setSubject(subject); message.setDataHandler(handler); if (recipients.indexOf(',') > 0) { message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients)); } else { message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients)); new tesetAsynTastk().execute(null, null, null); } } catch (Exception e) { } } class tesetAsynTastk extends AsyncTask <Void, Void, Void> { @Override protected synchronized void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { try { Transport.send(message); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); } } public class ByteArrayDataSource implements DataSource { private byte[] data; private String type; public ByteArrayDataSource(byte[] data, String type) { super(); this.data = data; this.type = type; } public ByteArrayDataSource(byte[] data) { super(); this.data = data; } public void setType(String type) { this.type = type; } public String getContentType() { if (type == null) return "application/octet-stream"; else return type; } public InputStream getInputStream() throws IOException { return new ByteArrayInputStream(data); } public String getName() { return "ByteArrayDataSource"; } public OutputStream getOutputStream() throws IOException { throw new IOException("Not Supported"); } } }
JSSEProvider
.java
public final class JSSEProvider extends Provider { public JSSEProvider() { super("HarmonyJSSE", 1.0, "Harmony JSSE Provider"); AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { public Void run() { put("SSLContext.TLS", "org.apache.harmony.xnet.provider.jsse.SSLContextImpl"); put("Alg.Alias.SSLContext.TLSv1", "TLS"); put("KeyManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl"); put("TrustManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl"); return null; } }); } }
GmailSender sender = new GmailSender("아이디@gmail.com","비번"); // SUBSTITUTE HERE try { sender.sendMail( "제목", "내용" , "아이디@gmail.com", "아이디@gmail.com" ); } catch (Exception e) { Log.e("SendMail", e.getMessage(), e); }
끝~
반응형
'Mobile > Android' 카테고리의 다른 글
안드로이드 광고 + AdMob (8) | 2014.07.20 |
---|---|
안드로이드 구글맵 v2 (1) | 2014.07.19 |
안드로이드 gcm registraion ID change 시점 설명 (0) | 2014.06.19 |
안드로이드 센서 + 자이로스코프 (1) | 2014.06.16 |
cocos2d-x 안드로이드 실행 (0) | 2014.06.06 |