大佬教程收集整理的这篇文章主要介绍了Android – 使用JavaMail和OAuth2发送电子邮件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在网上搜索了@L_624_5@mail代码,使用我从API检索的令牌发送电子邮件,我找到了以下我现在使用的代码:
package com.provider; import java.io.byteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.outputStream; import java.security.Provider; import java.security.Security; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.Datasource; import javax.mail.Session; import javax.mail.Transport; import javax.mail.URLName; import javax.mail.message; import javax.mail.internet.InternetAddress; import javax.mail.internet.Mimemessage; import javax.mail.util.byteArrayDatasource; import android.util.Log; import com.sun.mail.smtp.SMTPTransport; import com.sun.mail.util.bASE64EncoderStream; public class GMailOauthSender { private Session session; private String mailhost = "smtp.gmail.com"; privatE int port = 587; private String user; private String password; public SMTPTransport connectToSmtp(String host,int port,String userEmail,String oauthToken,Boolean debug) throws Exception { Properties props = new Properties(); props.put("mail.smtp.starttls.enable","true"); props.put("mail.smtp.starttls.required","true"); props.put("mail.smtp.sasl.enable","true"); props.put("mail.smtp.auth","true"); props.put("mail.imap.auth.login.disable","true"); props.put("mail.imap.auth.plain.disable","true"); session = Session.geTinstance(props); session.setDebug(debug); final URLName unusedUrlName = null; SMTPTransport transport = new SMTPTransport(session,unusedUrlName); // If the password is non-null,SMTP tries to do AUTH LOGIN. final String emptypassword = null; transport.connect(host,port,userEmail,emptypassword); byte[] response = String.format("user=%s\1auth=Bearer %s\1\1",oauthToken).getBytes(); response = BASE64EncoderStream.encode(responsE); transport.issueCommand("AUTH XOAUTH2 " + new String(responsE),235); return transport; } public synchronized void sendMail(String subject,String body,String user,String recipients) { try { SMTPTransport smtpTransport = connectToSmtp("smtp.gmail.com",587,user,oauthToken,truE); Mimemessage message = new Mimemessage(session); DataHandler handler = new DataHandler(new ByteArrayDatasource(body.getBytes(),"text/plain")); message.setSender(new InternetAddress(user)); 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)); smtpTransport.sendmessage(message,message.getAllRecipients()); } catch (Exception E) { //Log.d("test",e.getmessage()); } }
不幸的是,代码根本不起作用.到目前为止,我已经坚持了三个多星期.有什么建议?
首先,您需要在开发人员控制台中为您的应用设置OAuth2,有关详细信息,请转到此link
现在您需要添加这4个文件,这些将有助于在后台发送邮件.当用户打开应用程序时,将向用户显示同意屏幕(文件AUthActivity.java中的代码),并且必须允许该应用程序使用gmail,这是一次性活动,以后不再需要.执行此操作时,用户从Google服务器请求令牌,并将保存在首选项中,以便不再询问用户(authpreferences.java).用户批准后,您可以使用以下方式发送邮件:
GMailSender gMailSender = new GMailSender(); gMailSender.sendMail("hi","hi",authpreferences.getUser(),authpreferences.getToken(),"somemailid@gmail.com");
github:https://gist.github.com/ranjithnair02/1c6dab7dec51971abfec中文件的链接
http://javamail-android.googlecode.com/files/mail.jar
http://javamail-android.googlecode.com/files/activation.jar
http://javamail-android.googlecode.com/files/additionnal.jar
您还需要在Androidmanifest.xml中添加以下内容
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
以上是大佬教程为你收集整理的Android – 使用JavaMail和OAuth2发送电子邮件全部内容,希望文章能够帮你解决Android – 使用JavaMail和OAuth2发送电子邮件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。