从oAuth认证应用程序通过SMTP发送邮件所需的Android示例
我下面是oAuth的一个演示,它检索用户的Gmail联系人。我可以通过oAuth进行身份验证,并且可以很好地获取联系人 现在我想修改它,以便能够通过SMTP发送电子邮件。我可以得到oAuth的授权来做这件事 我的问题是我不知道下一步该怎么做。一旦我通过身份验证,如何格式化发送电子邮件的请求 我不希望任何人为我写代码,只要一个简单的链接到谷歌api文档,涵盖这应该让我去。我就是找不到他们从oAuth认证应用程序通过SMTP发送邮件所需的Android示例,android,oauth,smtp,gmail,Android,Oauth,Smtp,Gmail,我下面是oAuth的一个演示,它检索用户的Gmail联系人。我可以通过oAuth进行身份验证,并且可以很好地获取联系人 现在我想修改它,以便能够通过SMTP发送电子邮件。我可以得到oAuth的授权来做这件事 我的问题是我不知道下一步该怎么做。一旦我通过身份验证,如何格式化发送电子邮件的请求 我不希望任何人为我写代码,只要一个简单的链接到谷歌api文档,涵盖这应该让我去。我就是找不到他们 谢谢你的帮助。我也一直在研究这个问题。如果您可以通过OAuth进行身份验证,那么您只需要通过OAuth使用Go
谢谢你的帮助。我也一直在研究这个问题。如果您可以通过OAuth进行身份验证,那么您只需要通过OAuth使用Google的Gmail API就可以了。我让Gmail作为java应用程序与OAuth一起工作。但对于Android来说,有趣的是,谷歌提供的相同代码只适用于SMTP(而不是IMAP)。但我想还是会有帮助的 以下链接将为您提供谷歌针对Gmail的OAuth协议: 他们有现成的样品。确保您已准备好JavaMail和OAuth访问令牌。不过,您不需要ApacheAnt来运行示例代码。我只是使用了eclipse并运行了主类
还要知道,Gmail的OAuth略有不同。我不确定您是如何进行身份验证的,但对于Gmail来说,范围将有所不同:如果您不知道,Scribe将是一种非常方便的方式,可以让OAuth在Java中工作。我实际上也一直在研究这一点。如果您可以通过OAuth进行身份验证,那么您只需要通过OAuth使用Google的Gmail API就可以了。我让Gmail作为java应用程序与OAuth一起工作。但对于Android来说,有趣的是,谷歌提供的相同代码只适用于SMTP(而不是IMAP)。但我想还是会有帮助的
btnPreviewEmails.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
String host="your smtp";
final String user="from email address";//change accordingly
final String password="frm email password";//change accordingly
String to="to email";//change accordingly
//Get the session object
Properties props = new Properties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth", "true");
javax.mail.Session session = javax.mail.Session.getDefaultInstance(props,new javax.mail.Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(user,password);
}
});
//Compose the message
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(javax.mail.Message.RecipientType.TO,new InternetAddress(to));
message.setSubject("javatpoint");
message.setText("This is simple program of sending email using JavaMail API");
//send the message
javax.mail.Transport.send(message);
System.out.println("message sent successfully...");
}
catch (MessagingException e)
{
e.printStackTrace();
}
}});
以下链接将为您提供谷歌针对Gmail的OAuth协议:
他们有现成的样品。确保您已准备好JavaMail和OAuth访问令牌。不过,您不需要ApacheAnt来运行示例代码。我只是使用了eclipse并运行了主类
还要知道,Gmail的OAuth略有不同。我不确定你是如何进行身份验证的,但对于Gmail来说,范围将有所不同:如果你不知道,Scribe将是让OAuth在Java中工作的一种非常方便的方法。进一步研究后,我开始认为,一旦我通过OAuth进行了身份验证,我将需要使用像javamail这样的外部库来发送电子邮件,并以某种方式传递OAuth凭据。有人能帮我确认一下,也许能给我指出正确的方向吗?谢谢进一步研究这一点,我开始认为,一旦我通过oAuth进行了身份验证,我就需要使用像javamail这样的外部库来发送电子邮件,并以某种方式传递oAuth凭据。有人能帮我确认一下,也许能给我指出正确的方向吗?谢谢谢谢,但我想这样做,而不必询问用户凭据。这不是一个有效的答案,问题是关于OAuth2身份验证,它不使用用户名和密码,而是使用Oauth令牌。请阅读谷歌和OAuth。为了避免误导开发者,我否决了答案。对于非OAuth用户,您的答案可能没问题,但是Google会阻止通过不安全的应用发送电子邮件,除非用户承担风险,这不是一种安全的方法。谢谢,但我想这样做,而不必向用户索要凭据。这不是一个有效的答案,问题是关于OAuth2身份验证,它不使用用户名和密码,而是使用Oauth令牌。请阅读谷歌和OAuth。为了避免误导开发者,我否决了答案。对于非OAuth,您的答案可能没问题,但是Google会阻止通过不安全的应用发送电子邮件,除非用户承担风险,这不是一种安全的方法。
btnPreviewEmails.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
String host="your smtp";
final String user="from email address";//change accordingly
final String password="frm email password";//change accordingly
String to="to email";//change accordingly
//Get the session object
Properties props = new Properties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth", "true");
javax.mail.Session session = javax.mail.Session.getDefaultInstance(props,new javax.mail.Authenticator() {
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(user,password);
}
});
//Compose the message
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(javax.mail.Message.RecipientType.TO,new InternetAddress(to));
message.setSubject("javatpoint");
message.setText("This is simple program of sending email using JavaMail API");
//send the message
javax.mail.Transport.send(message);
System.out.println("message sent successfully...");
}
catch (MessagingException e)
{
e.printStackTrace();
}
}});