Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Lôi gửi mail bằng giao thưc SMTP port 465.

  1. #1
    Ngày gia nhập
    11 2011
    Bài viết
    29

    Mặc định Lôi gửi mail bằng giao thưc SMTP port 465.

    Chào các bạn. Mình xây dụng một phần code về việc gửi mail. Code của mình test trên local chạy thì bình thường. Nhưng chạy trên IIS thì bị lỗi.
    System.Web.HttpException (0x80004005): At least one recipient is required, but none were found.
    ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
    ---> System.Runtime.InteropServices.COMException: At least one recipient is required, but none were found.

    --- End of inner exception stack trace ---
    at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
    at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
    at System.Web.Mail.SmtpMail.LateBoundAccessHelper.Cal lMethod(Object obj, String methodName, Object[] args)
    at System.Web.Mail.SmtpMail.LateBoundAccessHelper.Cal lMethod(Object obj, String methodName, Object[] args)
    at System.Web.Mail.SmtpMail.CdoSysHelper.Send(MailMes sage message)
    at System.Web.Mail.SmtpMail.Send(MailMessage message)
    at WebGameMVC.Mail.GoogleMail.Send(MailMessage Mail) in D:\Hoc Tap\C#\ASP MVC\Project\WebGameMVC\WebGameMVC\Mail\GoogleMail. cs:line 75
    Bạn nào có kinh nghiệm chỉ giúp mình với. Mình xin cảm ơn.
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Web;
    5. using System.Web.Mail;
    6. using WebGameMVC.Models;
    7. using System.IO;
    8.  
    9. namespace WebGameMVC.Mail
    10. {
    11.     public static class GoogleMail
    12.     {
    13.         public static String From = "info.ozgame@gmail.com";
    14.         public static String Password = "xxxxxx";
    15.  
    16.         static public void Send(String To, String Subject, String Body)
    17.         {
    18.             MailMessage Mail = GoogleMail.CreateMailMessage(To, Subject, Body);
    19.             GoogleMail.Send(Mail);
    20.         }
    21.  
    22.         static public void Send(String To, String Cc, String Bcc, String Subject, String Body, String[] Attachments)
    23.         {
    24.             MailMessage Mail = GoogleMail.CreateMailMessage(To, Subject, Body);
    25.  
    26.             if (!String.IsNullOrEmpty(Cc))
    27.             {
    28.                 Mail.Cc = Cc.Replace(',', ';').Replace(" ", "");
    29.             }
    30.  
    31.             if (!String.IsNullOrEmpty(Bcc))
    32.             {
    33.                 Mail.Bcc = Bcc.Replace(',', ';').Replace(" ", "");
    34.             }
    35.  
    36.             if (Attachments != null)
    37.             {
    38.                 foreach (String Attachment in Attachments)
    39.                 {
    40.                     Mail.Attachments.Add(Attachment);
    41.                 }
    42.             }
    43.  
    44.             GoogleMail.Send(Mail);
    45.         }
    46.  
    47.         static MailMessage CreateMailMessage(String To, String Subject, String Body)
    48.         {
    49.             MailMessage Mail = new MailMessage();
    50.             Mail.BodyFormat = MailFormat.Html;
    51.             Mail.BodyEncoding = System.Text.Encoding.UTF8;
    52.  
    53.             Mail.From = From;
    54.             Mail.To = To;
    55.             Mail.Subject = Subject;
    56.             Mail.Body = Body;
    57.  
    58.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "smtp.gmail.com");
    59.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "465");
    60.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", "2");
    61.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
    62.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", GoogleMail.From);
    63.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", GoogleMail.Password);
    64.             Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
    65.  
    66.             return Mail;
    67.         }
    68.  
    69.         static void Send(MailMessage Mail)
    70.         {
    71.  
    72.             SmtpMail.SmtpServer = "smtp.gmail.com:465";
    73.             try
    74.             {
    75.                 SmtpMail.Send(Mail);
    76.             }
    77.             catch (Exception ex)
    78.             {
    79.                 FileInfo t = new FileInfo(@"D:\log.txt");
    80.                 StreamWriter Tex = t.CreateText();
    81.                 Tex.WriteLine(ex.ToString() + "\n");
    82.                 Tex.Write(Tex.NewLine);
    83.                 Tex.Close();
    84.             }
    85.         }
    86.     }
    87. }

  2. #2
    Ngày gia nhập
    01 2008
    Bài viết
    120

    Em có 1 số cái sai sau:
    1. Không bao giờ được Bắt lỗi kiểu như này:
    catch (Exception ex)
    {
    FileInfo t = new FileInfo(@"D:\log.txt");
    StreamWriter Tex = t.CreateText();
    Tex.WriteLine(ex.ToString() + "\n");
    Tex.Write(Tex.NewLine);
    Tex.Close();
    }
    Đơn giản vì e vừa tạo 1 file mới(cái này đã có thể gây lỗi rồi), và hàm ex.Tótring() cũng sẽ gây lỗi do như e post => e ko bit đó là lỗi gì.
    Phải chuyển try catch vào hàm SendEmail phía trên.
    2. A thường send email gmail qua cổng 25, ko ít sử dụng cổng 465 , thử lại xem
    3. Hàm của e gửi mail mà dùng Gmail thì muôn đời không bao giờ được vì gmail nó phải bật nhiều thứ nên lém.
    Ví dụ : như EnableSsl=true; UseDefaultCredentials=false.
    Đây là 1 hàm mẫu:
    Code:
    public  int SendSmtpClientMail(string sFrom, string pass, string provider, string sTo, string sSubject, string sContent)
        {
            NetworkCredential loginInfo = new NetworkCredential(sFrom, pass);
    
            MailMessage msg = new MailMessage();
    
            msg.From = new MailAddress(sFrom);
    
            msg.To.Add(new MailAddress(sTo));
    
            msg.Subject = sSubject;
            msg.Headers.Add("Message-Id", String.Concat("<", DateTime.Now.ToString("yyMMdd"), ".", DateTime.Now.ToString("HHmmss"), "@domain>"));
            msg.Body = sContent;
    
            msg.IsBodyHtml = true;
    
            SmtpClient client = new SmtpClient("smtp.gmail.com", 25);        
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.EnableSsl = true;
            client.UseDefaultCredentials = false;
            client.Credentials = loginInfo;
    
            try
            {
                client.Send(msg);
                //Button1.Text = "send ok";
                return 1;
            }
            catch (Exception ex)
            {
                //Button1.Text = "KO DC RUI";
                return 0;
            }
    
        }
    Đã mất công nghĩ thì nghĩ mẹ cái thật lớn vào !
    Y!H: trinhhoaithanh1905

Các đề tài tương tự

  1. Gửi và nhận mail bằng giao thức SMTP/POP3 sử dụng C#.
    Gửi bởi dangcuongpn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 46
    Bài viết cuối: 30-10-2013, 09:16 AM
  2. Gửi mail bằng giao thức SMTP với lập trình C#?
    Gửi bởi dangcuongpn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 21-12-2012, 05:09 PM
  3. Ứng dụng gửi nhận mail bằng POP3 - FPT - SMTP
    Gửi bởi nhatnghe_thuong trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 19-12-2011, 10:26 AM
  4. Sử dụng kĩ thuật lập trình với giao thức SMTP/POP3 xây dựng CT gửi và nhận mail.
    Gửi bởi dangcuongpn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 23-11-2010, 04:36 PM
  5. Gửi mail với SMTP chứng thực với Gmail
    Gửi bởi sunflower trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 09-04-2010, 11:30 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn