2016-12-30 11 views
0

내 앱에서 전자 메일을 보내려는 경우 디버깅 모드에서 제대로 작동하지만 릴리스하면이 오류가 발생합니다. 이미 예외를 잡기는하지만 이메일을 보내지 않아 실제로이 기능이 필요합니다. 이 문제는 어떻게 발생하며 배포 할 때 어떻게 작동 할 수 있습니까? 필자는 여러 대의 전화기에서이를 테스트했으며 모두이 예외를 사용하여 사용 된 전화기가 문제가되지 않습니다.C# Xamarin에서 System.Net.Sockets.SocketException을 해결하는 방법?

대응 코드 : "이름"과 "이메일"에서

this.Dismiss(); 
var message = new MimeMessage(); 
message.From.Add(new MailboxAddress("Name", "Email")); 
message.To.Add(new MailboxAddress("Name", "Email")); 
message.Subject = "Test" 

message.Body = new TextPart("plain") 
{ 
    Text = @"Test" 
}; 

using (var client = new MailKit.Net.Smtp.SmtpClient()) 
{ 
    try 
    { 
     client.ServerCertificateValidationCallback = (s, c, h, e) => true; 
     client.Connect("smtp.gmail.com", 25, false); 

     // Note: since we don't have an OAuth2 token, disable 
     // the XOAUTH2 authentication mechanism. 

     client.AuthenticationMechanisms.Remove("XOAUTH2"); 
     client.Authenticate("Account", "Password"); 

     client.Send(message); 
     client.Disconnect(true); 

     Toast.MakeText(this.Activity, "Thanks for the email", Android.Widget.ToastLength.Short).Show(); 
    } 
    catch (System.Net.Sockets.SocketException e) 
    { 
     Toast.MakeText(this.Activity, "Connection error, please try again later!", Android.Widget.ToastLength.Short).Show(); 
    } 

는 해당 정보하지만이 예제를 변경했습니다. client의 "Account"및 "Password"와 동일합니다. 보안을 위해 인증하십시오.

EDIT : 오류 코드는 11001이며 메시지는 호스트 "smtp.gmail.com"을 확인할 수 없습니다. 다른 포트에서도 마찬가지입니다. 이상한 점은 내 에뮬레이터에서 디버깅 할 때 작동하지만 배포 할 때 휴대폰에서는 작동하지 않는다는 것입니다.

+1

SSL을 사용하십시오 (포트 587). Google과 관련하여 문제가 있다고 생각합니다. – john

+0

앱에서 보낸 FROM 주소가 중요합니까? 에서, 당신의 dev에 ip A와 release는 ip B입니까? 그런 다음 Google의 안내를 살펴보십시오. 나는 당신이 더 강력한 암호가 필요하다고 생각합니다. – user1515791

+0

예외는'Message' 속성을 가지고 있으며'SocketException'은'ErrorCode' 속성을 가지고 있습니다 - 질문에 그것들을 넣을 수 있습니까? –

답변

1

벙어리 실수, 나는 인터넷에 액세스 권한을 추가하는 것을 잊었다.

그럼 디버깅 모드에서 작동하지만 조금 이상합니다.

+0

잡아라, Ewan! :) –