এসএমটিপি ইমেল প্রেরণের সময় কেন আমি "সম্পত্তি সম্পত্তি বরাদ্দ করতে পারি না"?


274

আমি বুঝতে পারি না কেন এই কোডটি কাজ করছে না। সম্পত্তি অর্পণ করা যাবে না বলে আমি একটি ত্রুটি পেয়েছি

MailMessage mail = new MailMessage();
SmtpClient client = new SmtpClient();            
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "smtp.gmail.com";
mail.To = "user@hotmail.com"; // <-- this one
mail.From = "you@yourcompany.com";
mail.Subject = "this is a test email.";
mail.Body = "this is my test email body";
client.Send(mail);

1
খুব কম যে আপনি এসএমটিপি এর মাধ্যমে জিমেইলের মাধ্যমে প্রেরণ করার চেষ্টা করছেন আপনার যদি কম সুরক্ষিত অ্যাপ্লিকেশনগুলিকে আপনার অ্যাকাউন্টে অ্যাক্সেস করার অনুমতি দেওয়া উচিত support.google.com/accounts/answer/6010255?hl=en
ম্যাথু লক

উত্তর:


362

mail.Toএবং কেবল mail.Fromপাঠযোগ্য। তাদের কনস্ট্রাক্টরে সরান।

using System.Net.Mail;

...

MailMessage mail = new MailMessage("you@yourcompany.com", "user@hotmail.com");
SmtpClient client = new SmtpClient();
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "smtp.gmail.com";
mail.Subject = "this is a test email.";
mail.Body = "this is my test email body";
client.Send(mail);

9
mail.To কেবল পাঠযোগ্য, থেকে হয় না। পাবলিক মেলএড্রেসক্লিকেশন টু; পেতে; }
এমআরবি

41
কারণ এটি একটি সংগ্রহ। আপনি কেবল এটিতে যোগ করতে পারেন
ওসকার কেজেলিন

17
@ অস্কার ঠিক আছে, তাই আমার আরও সুনির্দিষ্ট হওয়া উচিত ছিল। আপনি কোনও নির্দিষ্ট ঠিকানায় মেইল ​​টু সেট করতে পারবেন না। আপনাকে অবশ্যই কনস্ট্রাক্টর বা কল অ্যাড ব্যবহার করতে হবে। আমি কেবল প্রথম সংকলক সতর্কবার্তাটিই সম্বোধন করছিলাম: ত্রুটি CS0200: সম্পত্তি বা সূচক 'সিস্টেম. নেট.মেল.মেলমেজেজ.টো'কে বরাদ্দ করা যাবে না - এটি কেবল পঠনযোগ্য
এমআরবি

9
@ ডগহাউফ আপনি একটি পাসওয়ার্ড সুরক্ষিত এসএমটিপি সার্ভারের সাথে স্মিটপ্লায়েন্ট ক্লাস ব্যবহার করতে পারেন। আপনার এসএমটিপি সার্ভারটি একটি অভ্যন্তরীণ সার্ভার বলে মনে হচ্ছে যার অর্থ এটি হবে যে আপনার প্রোগ্রামটি কেবল নেটওয়ার্কে থাকলেই সেই এসএমটিপি সার্ভারের সাথে সংযোগ রাখতে সক্ষম হবে। client.Host = "mail.youroutgoingsmtpserver.com"; client.Credentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
clifford.duke

4
SmtpClient আইডিস্পোজেবল প্রয়োগ করে, তাই আপনার সম্ভবত এটিতে পরিবর্তন করা উচিত: (SmtpClient ক্লায়েন্ট = নতুন SmtpClient ()) {...}
মার্ক মিলার

261

এই :

mail.To = "user@hotmail.com";

হতে হবে:

mail.To.Add(new MailAddress("user@hotmail.com"));

এটি এবং ডিফল্ট MailMessageকনস্ট্রাক্টর ব্যবহার করে আপনাকে সেট না Toকরেই ক্ষেত্রটি সেট করার অনুমতি দেয় Fromযা <smtp> এলিমেন্টে (নেটওয়ার্ক সেটিংস)
bstoney

কেউ আমাকে বলতে পারেন যে আমি কীভাবে এটি গুগল এসএমটিপি-র পরিবর্তে নিজের এসএমটিপি সার্ভারের জন্য কাজ করতে পারি? আমি {"Unable to connect to the remote server"} {"The requested address is not valid in its context IP-ADDRESS:25"}যখন আমার এসএমটিপি সার্ভারের সাথে সংযোগ দেওয়ার চেষ্টা করছি তখন আমি ত্রুটি পাচ্ছি
ইউড্রয়েড

@ ইউড্রয়েড সঠিকভাবে এর বৈশিষ্ট্য Hostএবং Portবৈশিষ্ট্য সেট করুন SmtpClient
মিত্রান্দির

@ মিথরন্দির হ্যাঁ আমি এটি সঠিকভাবে স্থাপন করছি। আমি আউটলুকে আমার এসএমটিপি মেল অ্যাকাউন্ট সেটআপ করেছি এবং এর থেকে প্রয়োজনীয় সমস্ত সেটিংস পেয়েছি। হোস্ট এবং পোর্ট ওয়েবকনফাইগ ফাইলে ঘোষিত হয়েছে এবং আমি এটি রানটাইম আনছি।
ইউড্রয়েড

121

অবশেষে কাজ পেয়ে গেল :)

using System.Net.Mail;
using System.Text;

...

// Command line argument must the the SMTP host.
SmtpClient client = new SmtpClient();
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("user@gmail.com","password");

MailMessage mm = new MailMessage("donotreply@domain.com", "sendtomyemail@domain.co.uk", "test", "test");
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

client.Send(mm);

দুর্বল বানান সম্পর্কে দুঃখিত


5
মিমি থাকা উচিত না? প্রশ্ন ()?
স্টিম

বিটিডব্লিউ, ডিফল্ট এসএমটিপি বন্দরটি 25.
স্টিম

2
ধন্যবাদ! এমনকি আজ অবধি এটি কাজ করেছে তবে পরিবর্তে দৃষ্টিভঙ্গি ব্যবহার করছে। [ক্লায়েন্ট.হোস্ট = "smtp-mail.outlook.com";]
compski

6
587 নিরাপদ এসএমটিপি।
ব্যবহারকারী 3800527

1
@ freej17 যোগ করুন MailAddress copy = নতুন মেলএড্রেস ("বিজ্ঞপ্তি_লিস্ট@contoso.com"); mm.CC.Add (কপি);
স্যাম স্টিফেনসন

19
public static void SendMail(MailMessage Message)
{
    SmtpClient client = new SmtpClient();
    client.Host = "smtp.googlemail.com";
    client.Port = 587;
    client.UseDefaultCredentials = false;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = true;
    client.Credentials = new NetworkCredential("myemail@gmail.com", "password");
    client.Send(Message); 
}

4
MailMessage সম্পত্তিগুলিতে ওপির অ্যাসাইনমেন্ট কেন করা যায় না তা এটি মোটেই ঠিক করে না ।
অধ্যাপক

17

এটি আমার পক্ষে এভাবে কাজ করে। আশা করি আপনি এটি দরকারী পাবেন

MailMessage objeto_mail = new MailMessage();
SmtpClient client = new SmtpClient();
client.Port = 25;
client.Host = "smtp.internal.mycompany.com";
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("user", "Password");
objeto_mail.From = new MailAddress("from@server.com");
objeto_mail.To.Add(new MailAddress("to@server.com"));
objeto_mail.Subject = "Password Recover";
objeto_mail.Body = "Message";
client.Send(objeto_mail);

বাসা থেকে আমার কম্পিউটারে কোনও অভ্যন্তরীণ সংস্থার সার্ভার বা আউটলুক ডটকম নেই। আমার কাছে অনলাইনে একটি আউটলুক ডটকম অ্যাকাউন্ট রয়েছে, আমি কি এটি হোস্টের জন্য ব্যবহার করতে পারি?
ডগ হাউফ

12

প্রথমে https://myaccount.google.com/lesssecureapps এ যান এবং কম সুরক্ষিত অ্যাপ্লিকেশনগুলিকে সত্য করে দিন

তারপরে নীচের কোডটি ব্যবহার করুন। নীচের এই কোডটি কেবলমাত্র তখনই কাজ করবে যদি আপনার ইমেল ঠিকানাটি জিমেইল থেকে আসে।

static void SendEmail()
    {
        string mailBodyhtml =
            "<p>some text here</p>";
        var msg = new MailMessage("from@gmail.com", "to1@gmail.com", "Hello", mailBodyhtml);
        msg.To.Add("to2@gmail.com");
        msg.IsBodyHtml = true;
        var smtpClient = new SmtpClient("smtp.gmail.com", 587); //**if your from email address is "from@hotmail.com" then host should be "smtp.hotmail.com"**
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new NetworkCredential("from@gmail.com", "password");
        smtpClient.EnableSsl = true;
        smtpClient.Send(msg);
        Console.WriteLine("Email Sent Successfully");
    }

7

আপনি যদি চান যে আপনার ইমেল এবং পাসওয়ার্ডটি আপনার কোডটিতে উপস্থিত না হয় এবং আপনার সংস্থাটির ইমেল ক্লায়েন্ট সার্ভারটি আপনার উইন্ডোজ শংসাপত্রগুলি নীচে ব্যবহার করতে চায়।

client.Credentials = CredentialCache.DefaultNetworkCredentials;

উৎস


এটি ক্লায়েন্টের সমান D যদিও
আলেকজান্ডার

4

এটি কেবল মার্চ ২০১ 2017 সালের মতো আমার জন্য কাজ করেছে above উপরের সমাধান দিয়ে শুরু করে "অবশেষে কাজ করলাম :)" যা প্রথমে কাজ করেনি।

SmtpClient client = new SmtpClient();
client.Port =  587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("<me>@gmail.com", "<my pw>");
MailMessage mm = new MailMessage(from_addr_text, to_addr_text, msg_subject, msg_body);
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

client.Send(mm);

3

এই উত্তরের বৈশিষ্ট্যগুলি:

এখানে তোলা কোড:

    public async Task SendAsync(string subject, string body, string to)
    {
        using (var message = new MailMessage(smtpConfig.FromAddress, to)
        {
            Subject = subject,
            Body = body,
            IsBodyHtml = true
        })
        {
            using (var client = new SmtpClient()
            {
                Port = smtpConfig.Port,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Host = smtpConfig.Host,
                Credentials = new NetworkCredential(smtpConfig.User, smtpConfig.Password),
            })
            {
                await client.SendMailAsync(message);
            }
        }                                     
    }

ক্লাস শ্রীমতিপ কনফিগ:

public class SmtpConfig
{
    public string Host { get; set; }
    public string User { get; set; }
    public string Password { get; set; }
    public int Port { get; set; }
    public string FromAddress { get; set; }
}

2
MailMessage mm = new MailMessage(txtEmail.Text, txtTo.Text);
mm.Subject = txtSubject.Text;
mm.Body = txtBody.Text;
if (fuAttachment.HasFile)//file upload select or not
{
    string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);
    mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
}
mm.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential(txtEmail.Text, txtPassword.Text);
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
Response.write("Send Mail");

ভিডিও দেখুন: https://www.youtube.com/watch?v=bUUNv-19QAI


এই ভিডিওটি প্রশ্নের উত্তর দিতে পারে, তবে উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিংক কেবল-উত্তর অবৈধ হয়ে যাবে যদি লিঙ্ক পৃষ্ঠা পরিবর্তন
afxentios

MSDN UseDefaultCredentials প্রোপার্টিটির জন্য বলেছে যে "যদি UseDefaultCredentials সম্পত্তিটি মিথ্যাতে সেট করা থাকে তবে সার্ভারের সাথে সংযোগ করার সময় শংসাপত্রগুলির জন্য শংসাপত্রগুলির বৈশিষ্ট্যটিতে মান সেট ব্যবহার করা হবে।" সুতরাং, যদি আপনি শংসাপত্রের সম্পত্তি (কাস্টম শংসাপত্র) ব্যবহার করে থাকেন তবে আপনি ব্যবহারকারীর ডিফল্ট শংসাপত্রগুলির সম্পত্তিটিকে মিথ্যা হিসাবে সেট করবেন।
সের্গেই ইয়াশিন

1
smtp.Host = "smtp.gmail.com"; // the host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;

আরও তথ্যের জন্য এই নিবন্ধটি মাধ্যমে যান


1

শুধু এটি চেষ্টা করা প্রয়োজন:

string smtpAddress = "smtp.gmail.com";
int portNumber = 587;
bool enableSSL = true;
string emailFrom = "companyemail";
string password = "password";
string emailTo = "Your email";
string subject = "Hello!";
string body = "Hello, Mr.";
MailMessage mail = new MailMessage();
mail.From = new MailAddress(emailFrom);
mail.To.Add(emailTo);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
{
   smtp.Credentials = new NetworkCredential(emailFrom, password);
   smtp.EnableSsl = enableSSL;
   smtp.Send(mail);
}

1

মেলকিট একটি ওপেন সোর্স ক্রস প্ল্যাটফর্ম। নেট মেল-ক্লায়েন্ট লাইব্রেরি যা মাইমকিটের উপর ভিত্তি করে মোবাইল ডিভাইসের জন্য অনুকূলিত। এটিতে মাইক্রিটের মাধ্যমে মাইক্রোসফ্ট টিএনইএফ সমর্থন মাইক্রোসফ্ট টিএনইএফ-এর চেয়ে আরও বেশি এবং অগ্রিম বৈশিষ্ট্য রয়েছে।

এখান থেকে নুগেট প্যাকেজটি ডাউনলোড করুন

এই উদাহরণটি দেখুন আপনি মেল পাঠাতে পারেন

            MimeMessage mailMessage = new MimeMessage();
            mailMessage.From.Add(new MailboxAddress(senderName, sender@address.com));
            mailMessage.Sender = new MailboxAddress(senderName, sender@address.com);
            mailMessage.To.Add(new MailboxAddress(emailid, emailid));
            mailMessage.Subject = subject;
            mailMessage.ReplyTo.Add(new MailboxAddress(replyToAddress));
            mailMessage.Subject = subject;
            var builder = new BodyBuilder();
            builder.TextBody = "Hello There";            
            try
            {
                using (var smtpClient = new SmtpClient())
                {
                    smtpClient.Connect("HostName", "Port", MailKit.Security.SecureSocketOptions.None);
                    smtpClient.Authenticate("user@name.com", "password");

                    smtpClient.Send(mailMessage);
                    Console.WriteLine("Success");
                }
            }
            catch (SmtpCommandException ex)
            {
                Console.WriteLine(ex.ToString());              
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());                
            }

1

এসএমটিপি দ্বারা ইমেল প্রেরণ করুন

public void EmailSend(string subject, string host, string from, string to, string body, int port, string username, string password, bool enableSsl)
    {
        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient smtpServer = new SmtpClient(host);
            mail.Subject = subject;
            mail.From = new MailAddress(from);
            mail.To.Add(to);
            mail.Body = body;
            smtpServer.Port = port;
            smtpServer.Credentials = new NetworkCredential(username, password);
            smtpServer.EnableSsl = enableSsl;
            smtpServer.Send(mail);
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

0

MailMessageপ্রেরক এবং প্রাপকের ইমেল ঠিকানাগুলির সাথে আরম্ভ করুন । এটির মতো কিছু হওয়া উচিত

string from = "codeforwin@gmail.com";  //Senders email   
string to = "reciever@gmail.com";  //Receiver's email  
MailMessage msg = new MailMessage(from, to); 

সি # তে ইমেলগুলি কীভাবে প্রেরণ করা যায় তার পুরো কোড স্নিপেটটি পড়ুন


0

এটিও কাজ করবে ..

string your_id = "your_id@gmail.com";
string your_password = "password";
try
{
   SmtpClient client = new SmtpClient
   {
     Host = "smtp.gmail.com",
     Port = 587,
     EnableSsl = true,
     DeliveryMethod = SmtpDeliveryMethod.Network,
     Credentials = new System.Net.NetworkCredential(your_id, your_password),
     Timeout = 10000,
   };
   MailMessage mm = new MailMessage(your_iD, "recepient@gmail.com", "subject", "body");
   client.Send(mm);
   Console.WriteLine("Email Sent");
 }
 catch (Exception e)
 {
   Console.WriteLine("Could not end email\n\n"+e.ToString());
 }

0
 //Hope you find it useful, it contain too many things

    string smtpAddress = "smtp.xyz.com";
    int portNumber = 587;
    bool enableSSL = true;
    string m_userName = "support@xyz.com";
    string m_UserpassWord = "56436578";

    public void SendEmail(Customer _customers)
    {
        string emailID = gghdgfh@gmail.com;
        string userName = DemoUser;

        string emailFrom = "qwerty@gmail.com";
        string password = "qwerty";
        string emailTo = emailID;

        // Here you can put subject of the mail
        string subject = "Registration";
        // Body of the mail
        string body = "<div style='border: medium solid grey; width: 500px; height: 266px;font-family: arial,sans-serif; font-size: 17px;'>";
        body += "<h3 style='background-color: blueviolet; margin-top:0px;'>Aspen Reporting Tool</h3>";
        body += "<br />";
        body += "Dear " + userName + ",";
        body += "<br />";
        body += "<p>";
        body += "Thank you for registering </p>";            
        body += "<p><a href='"+ sURL +"'>Click Here</a>To finalize the registration process</p>";
        body += " <br />";
        body += "Thanks,";
        body += "<br />";
        body += "<b>The Team</b>";
        body += "</div>";
       // this is done using  using System.Net.Mail; & using System.Net; 
        using (MailMessage mail = new MailMessage())
        {
            mail.From = new MailAddress(emailFrom);
            mail.To.Add(emailTo);
            mail.Subject = subject;
            mail.Body = body;
            mail.IsBodyHtml = true;
            // Can set to false, if you are sending pure text.

            using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
            {
                smtp.Credentials = new NetworkCredential(emailFrom, password);
                smtp.EnableSsl = enableSSL;
                smtp.Send(mail);
            }
        }
    }

2
সমাধানটি ব্যাখ্যা করার জন্য এবং কেন মূল প্রশ্নকারী কোনও কোডের দেয়াল কেবল পোস্ট করার পরিবর্তে কোনও সমস্যা নিয়ে চলেছে তা দয়া করে আপনার উত্তরটি ব্যবহার করে বিবেচনা করুন। সমস্যাটি প্রথম স্থানে কেন ঘটেছিল তা বুঝতে এটি মূল প্রশ্নকারী এবং ভবিষ্যতের দর্শকদের পক্ষে উভয়ই বেশি কার্যকর useful
রেডব্যাসেট

@ রেডবাসেট পরামর্শ দেওয়ার জন্য ধন্যবাদ। আমি ঠিক সম্পাদনা করেছি এবং মন্তব্যে কিছু তথ্য রেখেছি, পরের বার আপনি যা কিছু বলেছিলেন তা মনে রাখবেন।
Dutt93
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.