2012-03-24 42 views
0

我有以下佈局: enter image description here我如何刪除Gmail驗證?

而下面的代碼:

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

}

最多,我能夠發送郵件o ñ發送郵件按鈕點擊與開放Android默認郵件客戶端。這裏需要gmail驗證,我不想要。
用戶只需輸入主題,電子郵件地址和信息併發送郵件到[email protected]
我只想發送郵件沒有任何郵件verfication,我也不在乎安全風險。
我要做什麼?幫助我

+1

http://stackoverflow.com/questions/2197741/how-to-send-email-from-my-android-application – 2012-03-24 11:05:32

+0

烏爾問題,並回答非常好的我用你的代碼時,首先我哈瓦問題時間我給用戶名和密碼運行應用程序它工作正常,但問題是當第二次我給錯誤的用戶名和密碼在這種情況下也是工作,以前的值不明確請解決我的問題 – NareshRavva 2012-05-02 10:38:31

回答

1

如果不進行身份驗證,則無法使用Gmail發送郵件。他們的服務器及其規則。

+0

然後,我應該取gmail用戶名和這個'GMailSender sender = new GMailSender(「gmailaddress @ gmailcom」,「gmailpassword」);'。我是新手! – captaindroid 2012-03-24 11:49:14

+0

一些開發者爲了從應用程序發送消息而創建一個gmail帳戶。這是我推薦的。即使用您自己的憑據。 – dldnh 2012-03-24 11:50:27

0

那麼要使用Gmail服務,您必須在使用avove代碼發送/接收電子郵件時需要Authantication Code。這是爲了Gmail團隊的安全目的。

但是,還有另一種發送電子郵件的方式是使用in-bulit電子郵件應用程序使用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 2012-03-24 11:50:26

+0

在這種情況下,您必須獲得發送/接收電子郵件的授權碼。 – Krish 2012-03-24 11:51:38

+0

這是什麼意思, 請說清楚! – captaindroid 2012-03-26 07:18:54