如何getAuth令牌,并在后台发送电子邮件?令牌、并在、后台、发送电子邮件

2023-09-13 01:22:39 作者:彼岸年华、宛若豆蔻

我已经使用JavaMail的-的Andr​​oid库发送邮件的背景。为了从用户名和密码免费用户,我决定使用。所以我可以得到令牌添加帐户/在android手机配置帐户时所产生的身份验证令牌和我怎么能使用令牌发送邮件在后台为使用SMTP(JavaMail的-机器人)库做到了。

I have used JavaMail-android libraries to send mail in background .In order to free user from username and password I decided to use Auth token generated when adding an account /configuring account in android phone .So can i get the token and how could i use the token to send mail in background as a did using smtp (javamail-android) libraries .

推荐答案

嗨它很简单,易于调用您的电子邮件发送通过的服务的它会自动工作邮件将发送在特定的时间。

Hi its so simple and easy call your email sending class through Service it will work automatically email will send on particular time.

在这里,我已经发布了样品code: 你应该写code的服务为 GMailSender发件人=新GMailSender(send_id,send_pass,imgpath); 它通过您的Gmail ID发送电子邮件只。

Here i have posted sample code: you should write code in service as GMailSender sender = new GMailSender(send_id,send_pass,imgpath); its for sending email through your gmail id only.

和现在GmailSender.java如下:

and now GmailSender.java as follows:

public class GMailSender extends javax.mail.Authenticator 

{

private String mailhost = "smtp.gmail.com";   
private String user;   
private String password;   
private Session session;   
private String path_img;  

static {   
    // AppLogger.LogError("Reached to Step1.1");
    Security.addProvider(new JSSEProvider());   
}  

public GMailSender(String user, String password,String path) 
{  
    path_img = path;
    // AppLogger.LogError("Reached to Step1.2");
    this.user = user;   
    this.password = password;   

    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "465");


    //AppLogger.LogError("Reached to Step1.3");
    session = Session.getDefaultInstance(props, this);   
    //AppLogger.LogError("Reached to Step1.4");
}   





protected PasswordAuthentication getPasswordAuthentication() {   
    return new PasswordAuthentication(user, password);
}   

public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {   
    try{

    //   AppLogger.LogError("Reached to Step1.5");
    MimeMessage message = new MimeMessage(session); 
   // AppLogger.LogError("Reached to Step1.6");
    DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/html"));   
    message.setSender(new InternetAddress(sender));   
    message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipients));
    //AppLogger.LogError("Reached to Step1.7");
    message.setSubject(subject);   

    message.setDataHandler(handler);  

    MimeMultipart multipart = new MimeMultipart("related");
    String htmlText=null;

    BodyPart messageBodyPart = new MimeBodyPart();
    htmlText = body+ "";

    messageBodyPart.setContent(htmlText, "text/html");



    MimeBodyPart attachmentPart = new MimeBodyPart();
    FileDataSource fileDataSource = new FileDataSource(path_img) {
        @Override
        public String getContentType() {
            return "image/jpg";
        }
    };
    attachmentPart.setDataHandler(new DataHandler(fileDataSource));
    attachmentPart.setFileName("image.jpg");

    multipart.addBodyPart(messageBodyPart);
   multipart.addBodyPart(attachmentPart);

    message.setContent(multipart);

    //AppLogger.LogError("Reached to Step1.8");
    if (recipients.indexOf(',') > 0)   
    {
        //AppLogger.LogError("Reached to Step1.9");
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));   
        Transport.send(message); 
      //  AppLogger.LogError("Reached to Step2.1");
    }
    else 
    {
        //AppLogger.LogError("Reached to Step2.2");
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));  
        Transport.send(message); 
    //AppLogger.LogError("Reached to Step2.3");
    }
   // Transport.send(message); 
   // AppLogger.LogError("Reached to Step2.4");
    }catch (Exception e)
    {
        throw new FileNotFoundException();
      }





}   

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");   
    }   
}   

试试这个样本,并尝试对所有电子邮件ID。并确保你有进口所需要的所有库。

try this sample and try for all email ids. and make sure that you have import all libraries needed..