2

アプリケーションからメールを送信する必要があるアプリケーションを開発しています。メールの本文と受信者は編集できません。だから私はこのリンクを使用してgmailを段階的に設定しました。

ここで、アプリケーションの必要性は、FROM UserName とパスワードがユーザーによって与えられることです。次のような任意のタイプにすることができます。

abc@gmail.com,
abc@rediffmail.com
abc@yahoomail.com

ユーザーが入力したユーザー名とパスワードが何であれ、電子メールが送信されます。私はそれについて検索し、yahoo idアプリケーションからメールを送信するには、yahoo smtpサーバーで構成する必要があることを取得しました。

しかし、ユーザーが他のメール ID を入力するとどうなりますか。アプリケーションがメールを送信できる一般的な方法はありますか? そのために私が実行しなければならない手順。

4

2 に答える 2

0

このようにしてみて、

       address = (EditText) findViewById(R.id.address);
     subject = (EditText) findViewById(R.id.subject);
    emailbody = (EditText) findViewById(R.id.body);
    send = (Button) findViewById(R.id.send);

    send.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            sendEmail();
        }
    });
}

public void sendEmail(){

    if(!address.getText().toString().trim().equalsIgnoreCase("")){
      final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
      emailIntent.setType("plain/text");
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{ address.getText().toString()});
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject.getText());
      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailbody.getText());
      sendMailDemo.this.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    }
    else{
        Toast.makeText(getApplicationContext(), "Please enter an email address..", Toast.LENGTH_LONG).show();
    }
于 2013-03-11T12:35:49.923 に答える
0

gmail をお持ちの場合、これは便利です 最初にこれら 3 つのライブラリをここからダウンロードします (メール/アクティベーション/追加) プロジェクトに追加します (プロジェクトにコピー/右クリック/ビルド パスに追加)

JSSEProvider クラス:

package com.emailsender;

import java.security.AccessController;

import java.security.Provider;



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 クラス:

package com.emailsender;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;  

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;



    private Multipart _multipart = new MimeMultipart();

    static {

        Security.addProvider(new  shooreshi.fayyaz.ghariebartar.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 {

            MimeMessage message = new MimeMessage(session);

            DataHandler handler = new DataHandler(new ByteArrayDataSource(

                    body.getBytes(), "music"));

            message.setSender(new InternetAddress(sender));

            message.setSubject(subject);

            message.setDataHandler(handler);

            BodyPart messageBodyPart = new MimeBodyPart();

            messageBodyPart.setText(body);

            _multipart.addBodyPart(messageBodyPart);



            // Put parts in message

            message.setContent(_multipart);

            if (recipients.indexOf(',') > 0)

                message.setRecipients(Message.RecipientType.TO,

                        InternetAddress.parse(recipients));

            else

                message.setRecipient(Message.RecipientType.TO,

                        new InternetAddress(recipients));

            Transport.send(message);

        } catch (Exception e) {



        }

    }



    public void addAttachment(String filename) throws Exception {

        BodyPart messageBodyPart = new MimeBodyPart();

        DataSource source = new FileDataSource(filename);

        messageBodyPart.setDataHandler(new DataHandler(source));

        messageBodyPart.setFileName("music.mp3");



        _multipart.addBodyPart(messageBodyPart);

    }



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

        }

    }

}

送信コード:

          new Thread(new Runnable() {

              public void run() {

                  try {

                      GMailSender sender = new GMailSender(

                              "yourgmail@gmail.com",

                              "yourpassword");



                    sender.addAttachment(Environment.getExternalStorageDirectory().getPath()+"/image.jpg");

                      sender.sendMail("your text",

                              "senderemail@gmail.com",

                              "recieveremail@gmail.com");









                  } catch (Exception e) {

                      Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();



                  }

              }

          }).start();

パーミッションを追加することを忘れないでください!

于 2015-04-19T20:29:33.167 に答える