2012-03-24 23 views
0

I以下のレイアウトがあります。 enter image description hereGmail認証を削除するにはどうすればよいですか?

し、次のコード:

public class MailSenderActivity extends Activity { 
ProgressDialog progress; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final Button send = (Button) this.findViewById(R.id.send); 
    final EditText subjectValue = (EditText) findViewById(R.id.subject); 

    final EditText senderEmailValue = (EditText) findViewById(R.id.email); 

    final EditText messageValue = (EditText) findViewById(R.id.body); 

    send.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      progress = ProgressDialog.show(MailSenderActivity.this, 
        "Dialog Title", "Please Wait", true); 
      new Thread(new Runnable() { 
       public void run() { 

        try { 
         GMailSender sender = new GMailSender(
           "[email protected]", "gmailpassword"); 
         sender.sendMail(subjectValue.getText().toString(), 
           messageValue.getText().toString(), 
           senderEmailValue.getText().toString(), 
           "[email protected]"); 
        } catch (Exception e) { 
         Log.e("SendMail", e.getMessage(), e); 
        } 
        runOnUiThread(new Runnable() { 
         public void run() { 
          progress.dismiss(); 

         } 
        }); 

       } 
      }).start(); 

     } 
    }); 

} 

}

とまで

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 com.main.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(), "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); 
    } catch (Exception e) { 

    } 
} 

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

}

は、iはできる午前メールを送るnは、アンドロイドのデフォルトのメールクライアントを開いて、メールボタンをクリックして送信します。ここでは、私が望んでいないGmailの検証が必要です。
ユーザーは件名、メールアドレス、メッセージを入力して [email protected]にメールを送信するだけです。
メールの確認なしでメールを送信したいだけでなく、セキュリティリスクを気にしません。
私は何をしなければなりませんか?ヘルプ

+1

http://stackoverflow.com/questions/2197741/how-to-send-email-from-my-android-application –

+0

ウル質問ととき最初、私は問題をHAVA私はあなたのコードを使用して非常に素晴らしい答えます私はユーザー名とパスワードを与えるそれは正常に動作しているアプリを実行しますが、問題は2番目のときに間違ったユーザー名とパスワードをこの場合にも与えている、それは以前の値は明確ではない私の問題を解決してください – NareshRavva

答えて

1

認証なしでGmailを使用してメールを送信することはできません。そのサーバー、そのルール。

+0

私はGmailのユーザー名を取得する必要がありますパスワードをこの 'GMailSender sender = new GMailSender(" gmailaddress @ gmailcom "、" gmailpassword ");に設定します。私はこれに初心者です! – captaindroid

+0

一部の開発者が行うことは、アプリケーションからメッセージを送信する目的でgmailアカウントを作成することです。これは私が推奨するものです。自分の資格情報を使用します。 – dldnh

0

Gmailサービスを使用するには、あなたのコードを使用してメールを送受信する際にAuthantication Codeが必要です。 Gmailチームのセキュリティ上の目的です。

しかし、別の方法では、Intentを使用して電子メールアプリケーションを使用してメールを送信しています。

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{ "[email protected]"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
i.putExtra(Intent.EXTRA_TEXT , "body part"); 

try 
{  
    startActivity(Intent.createChooser(i, "Sending Email...")); 
} 
catch (android.content.ActivityNotFoundException ex) 
{  
    Toast.makeText(MyActivity.this, "No Email clients",Toast.LENGTH_SHORT).show(); 
} 
+0

私は内蔵の電子メールアプリケーションを使いたくないです。送信ボタンをクリックしてメールを送信するだけで、すべてのプロセスはバックグラウンドで実行する必要があります。 – captaindroid

+0

その場合は、電子メールを送受信するための認証コードを取得する必要があります。 – Krish

+0

それはどういう意味ですか、 私にはっきり言ってください! – captaindroid

関連する問題