zoukankan      html  css  js  c++  java
  • Android 使用 SMTP 发送邮件

    package org.apache.android.mail;  
      
    import javax.activation.DataHandler;  
    import javax.activation.DataSource;  
    import javax.mail.Message;  
    import javax.mail.PasswordAuthentication;  
    import javax.mail.Session;  
    import javax.mail.Transport;  
    import javax.mail.internet.InternetAddress;  
    import javax.mail.internet.MimeMessage;  
    import java.io.ByteArrayInputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.OutputStream;  
    import java.security.Security;  
    import java.util.Properties;  
      
    public class GMailSender extends javax.mail.Authenticator {  
        private String mailhost = "smtp.gmail.com";  
        private String user;  
        private String password;  
        private Session session;  
      
        static {  
            Security.addProvider(new org.apache.harmony.xnet.provider.jsse.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 {  
            MimeMessage 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));  
            Transport.send(message);  
        }  
      
        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");  
            }  
        }  
    }
  • 相关阅读:
    vue——项目技术储备
    Framework7—— 混合开发
    CSS——常见的问题
    Vue——常见问题
    Vue——使用 watch 注意项
    Node——微服务架构(二)
    C——基本词汇
    Go——空接口与断言
    Node——PM2
    Vue——组件异步加载与路由懒加载
  • 原文地址:https://www.cnblogs.com/GnagWang/p/2079744.html
Copyright © 2011-2022 走看看