E-posta göndermek için ana makineme güvenmek yerine, e-posta iletilerini Gmail hesabımı kullanarak göndermeyi düşünüyordum . E-postalar şovumda çaldığım gruplara kişiselleştirilmiş e-postalardır.
Bunu yapmak mümkün mü?
E-posta göndermek için ana makineme güvenmek yerine, e-posta iletilerini Gmail hesabımı kullanarak göndermeyi düşünüyordum . E-postalar şovumda çaldığım gruplara kişiselleştirilmiş e-postalardır.
Bunu yapmak mümkün mü?
Yanıtlar:
Kullanımdan System.Net.Mail
kaldırılmış değil, kullandığınızdan emin olun System.Web.Mail
. SSL ile System.Web.Mail
hacky uzantılarının kaba bir karmaşası.
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
smtp.gmail.com
) something@gmail.com
gönderen olarak kullanırsanız sorun yaşayabilirsiniz . Btw: smtp.gmail.com
size ait değilse gönderen adresinin üzerine otomatik olarak yazar.
Yukarıdaki cevap işe yaramıyor. Ayarlamanız gerekiyor DeliveryMethod = SmtpDeliveryMethod.Network
veya " istemci kimliği doğrulanmadı " hatasıyla geri dönecek . Ayrıca zaman aşımı yapmak her zaman iyi bir fikirdir.
Düzeltilmiş kod:
using System.Net.Mail;
using System.Net;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
"Bir sunucudan" çalışmak için diğer yanıtlar için önce gmail hesabındaki daha az güvenli uygulamalar için Erişimi Açın .
Son zamanlarda google güvenlik politikasını değiştirmiş gibi görünüyor. En yüksek puanlı yanıt, hesap ayarlarınızı burada açıklandığı gibi değiştirene kadar artık çalışmıyor: https://support.google.com/accounts/answer/6010255?hl=tr
Mart 2016 itibarıyla, google ayar konumunu tekrar değiştirdi!
Bu ekli e-posta göndermek için .. Basit ve kısa ..
kaynak: http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html
using System.Net;
using System.Net.Mail;
public void email_send()
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your mail@gmail.com");
mail.To.Add("to_mail@gmail.com");
mail.Subject = "Test Mail - 1";
mail.Body = "mail with attachment";
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
mail.Attachments.Add(attachment);
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
Google, modern güvenlik standartlarını kullanmayan bazı uygulamaların veya cihazların oturum açma denemelerini engelleyebilir. Bu uygulamaların ve cihazların içine girmesi daha kolay olduğundan, bunları engellemek hesabınızı daha güvenli tutmanıza yardımcı olur.
En son güvenlik standartlarını desteklemeyen uygulamalara bazı örnekler:
Bu nedenle, Daha Az Güvenli Oturum Açma özelliğini etkinleştirmeniz gerekir google hesabınızda gerekir.
Google hesabında oturum açtıktan sonra şu adrese gidin:
https://myaccount.google.com/lesssecureapps
veya
https://www.google.com/settings/security/lesssecureapps
C # 'da aşağıdaki kodu kullanabilirsiniz:
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("email@gmail.com");
mail.To.Add("somebody@domain.com");
mail.Subject = "Hello World";
mail.Body = "<h1>Hello</h1>";
mail.IsBodyHtml = true;
mail.Attachments.Add(new Attachment("C:\\file.zip"));
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
{
smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
smtp.EnableSsl = true;
smtp.Send(mail);
}
}
Çalışması için gmail hesabımı diğer uygulamaların erişmesini mümkün kılmak için etkinleştirmem gerekiyordu. Bu, "daha az güvenli uygulamaları etkinleştir" ve ayrıca şu bağlantıyı kullanarak yapılır: https://accounts.google.com/b/0/DisplayUnlockCaptcha
İşte benim sürüm: " Gmail kullanarak C # E-posta Gönder ".
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail
{
class Program
{
static void Main(string[] args)
{
//Specify senders gmail address
string SendersAddress = "Sendersaddress@gmail.com";
//Specify The Address You want to sent Email To(can be any valid email address)
string ReceiversAddress = "ReceiversAddress@yahoo.com";
//Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
const string SendersPassword = "Password";
//Write the subject of ur mail
const string subject = "Testing";
//Write the contents of your mail
const string body = "Hi This Is my Mail From Gmail";
try
{
//we will use Smtp client which allows us to send email using SMTP Protocol
//i have specified the properties of SmtpClient smtp within{}
//gmails smtp server name is smtp.gmail.com and port number is 587
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(SendersAddress, SendersPassword),
Timeout = 3000
};
//MailMessage represents a mail message
//it is 4 parameters(From,TO,subject,body)
MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);
Console.WriteLine("Message Sent Successfully");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
Umarım bu kod iyi çalışır. Bir deneyebilirsiniz.
// Include this.
using System.Net.Mail;
string fromAddress = "xyz@gmail.com";
string mailPassword = "*****"; // Mail id password from where mail will be sent.
string messageBody = "Write the body of the message here.";
// Create smtp connection.
SmtpClient client = new SmtpClient();
client.Port = 587;//outgoing port for the mail.
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(fromAddress, mailPassword);
// Fill the mail form.
var send_mail = new MailMessage();
send_mail.IsBodyHtml = true;
//address from where mail will be sent.
send_mail.From = new MailAddress("from@gmail.com");
//address to which mail will be sent.
send_mail.To.Add(new MailAddress("to@example.com");
//subject of the mail.
send_mail.Subject = "put any subject here";
send_mail.Body = messageBody;
client.Send(send_mail);
Bunu dahil et,
using System.Net.Mail;
Ve sonra,
MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = Convert.ToInt16("587");
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","password");
client.EnableSsl = true;
client.Send(sendmsg);
Kaynak : ASP.NET C # ile e-posta gönder
Aşağıda C # kullanarak bir posta göndermek için örnek bir çalışma kodu, aşağıdaki örnekte google'ın smtp sunucusunu kullanıyorum.
Kod oldukça açıklayıcıdır, e-posta ve şifreyi e-posta ve şifre değerlerinizle değiştirin.
public void SendEmail(string address, string subject, string message)
{
string email = "yrshaikh.mail@gmail.com";
string password = "put-your-GMAIL-password-here";
var loginInfo = new NetworkCredential(email, password);
var msg = new MailMessage();
var smtpClient = new SmtpClient("smtp.gmail.com", 587);
msg.From = new MailAddress(email);
msg.To.Add(new MailAddress(address));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = loginInfo;
smtpClient.Send(msg);
}
Arka plan e-postası göndermek istiyorsanız, lütfen aşağıdakileri yapın
public void SendEmail(string address, string subject, string message)
{
Thread threadSendMails;
threadSendMails = new Thread(delegate()
{
//Place your Code here
});
threadSendMails.IsBackground = true;
threadSendMails.Start();
}
ve ad alanı ekle
using System.Threading;
Bir ipucu! Gönderen gelen kutusunu kontrol edin, belki daha az güvenli uygulamalara izin vermeniz gerekir. Bkz. Https://www.google.com/settings/security/lesssecureapps
Bunu dene,
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your_email_address@gmail.com");
mail.To.Add("to_address");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from GMAIL";
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
bu şekilde kullan
MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.Port = Convert.ToInt32("587");
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","MyPassWord");
client.Send(sendmsg);
Bunu unutma:
using System.Net;
using System.Net.Mail;
Gmail'deki güvenlik sorunlarını önlemek için, önce Gmail ayarlarınızdan bir uygulama şifresi oluşturmalısınız ve iki adımlı doğrulama kullansanız bile e-posta göndermek için gerçek bir şifre yerine bu şifreyi kullanabilirsiniz.
Gmail / Outlook.com e-postasındaki göndereni değiştirme:
Kimlik sahtekarlığını önlemek için - Gmail / Outlook.com, rasgele bir kullanıcı hesabı adından göndermenize izin vermez.
Sınırlı sayıda göndericiniz varsa bu talimatları izleyebilir ve ardından From
alanı bu adrese ayarlayabilirsiniz : Farklı bir adresten posta gönderme
Yapabileceğiniz en iyi şey hakkında keyfi bir e-posta adresinden (kullanıcının e-postalarını girdiği web sitesinde bir geri bildirim formu gibi ve size doğrudan e-posta göndermesini istemiyorsanız) göndermek istiyorsanız:
msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName));
Bu, bir geri bildirim sayfasında grubunuzun hayranına yanıt vermek için e-posta hesabınızdaki 'yanıtla'yı tıklamanıza izin verir, ancak gerçek e-postanızı bir ton istenmeyen postaya götürmez.
Kontrollü bir ortamdaysanız, bu harika çalışır, ancak yanıt belirtilse bile bazı e-posta istemcilerinin gönderen adrese gönderdiğini gördüğümü lütfen unutmayın (hangisini bilmiyorum).
Aynı sorunu yaşadım, ancak gmail'in güvenlik ayarlarına giderek ve Daha Az Güvenli uygulamalara izin vererek çözüldü . Domenic & Donny'den gelen Kod çalışır, ancak yalnızca bu ayarı etkinleştirdiyseniz
(Google'da) oturum açtıysanız bu bağlantıyı izleyebilir ve "Daha az güvenli uygulamalara erişim " için " Aç" arasında geçiş yapabilirsiniz
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail
{
class Program
{
static void Main(string[] args)
{
//Specify senders gmail address
string SendersAddress = "Sendersaddress@gmail.com";
//Specify The Address You want to sent Email To(can be any valid email address)
string ReceiversAddress = "ReceiversAddress@yahoo.com";
//Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
const string SendersPassword = "Password";
//Write the subject of ur mail
const string subject = "Testing";
//Write the contents of your mail
const string body = "Hi This Is my Mail From Gmail";
try
{
//we will use Smtp client which allows us to send email using SMTP Protocol
//i have specified the properties of SmtpClient smtp within{}
//gmails smtp server name is smtp.gmail.com and port number is 587
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(SendersAddress, SendersPassword),
Timeout = 3000
};
//MailMessage represents a mail message
//it is 4 parameters(From,TO,subject,body)
MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);
Console.WriteLine("Message Sent Successfully");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadKey();
}
}
}
}
Web.config'den posta gönderme ve kimlik bilgilerini alma yöntemlerinden biri:
public static string SendEmail(string To, string Subject, string Msg, bool bodyHtml = false, bool test = false, Stream AttachmentStream = null, string AttachmentType = null, string AttachmentFileName = null)
{
try
{
System.Net.Mail.MailMessage newMsg = new System.Net.Mail.MailMessage(System.Configuration.ConfigurationManager.AppSettings["mailCfg"], To, Subject, Msg);
newMsg.BodyEncoding = System.Text.Encoding.UTF8;
newMsg.HeadersEncoding = System.Text.Encoding.UTF8;
newMsg.SubjectEncoding = System.Text.Encoding.UTF8;
System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
if (AttachmentStream != null && AttachmentType != null && AttachmentFileName != null)
{
System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(AttachmentStream, AttachmentFileName);
System.Net.Mime.ContentDisposition disposition = attachment.ContentDisposition;
disposition.FileName = AttachmentFileName;
disposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;
newMsg.Attachments.Add(attachment);
}
if (test)
{
smtpClient.PickupDirectoryLocation = "C:\\TestEmail";
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
}
else
{
//smtpClient.EnableSsl = true;
}
newMsg.IsBodyHtml = bodyHtml;
smtpClient.Send(newMsg);
return SENT_OK;
}
catch (Exception ex)
{
return "Error: " + ex.Message
+ "<br/><br/>Inner Exception: "
+ ex.InnerException;
}
}
Ve web.config dosyasındaki ilgili bölüm:
<appSettings>
<add key="mailCfg" value="yourmail@example.com"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="yourmail@example.com">
<network defaultCredentials="false" host="mail.exapmple.com" userName="yourmail@example.com" password="your_password" port="25"/>
</smtp>
</mailSettings>
</system.net>
Bunu dene
public static bool Send(string receiverEmail, string ReceiverName, string subject, string body)
{
MailMessage mailMessage = new MailMessage();
MailAddress mailAddress = new MailAddress("abc@gmail.com", "Sender Name"); // abc@gmail.com = input Sender Email Address
mailMessage.From = mailAddress;
mailAddress = new MailAddress(receiverEmail, ReceiverName);
mailMessage.To.Add(mailAddress);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
SmtpClient mailSender = new SmtpClient("smtp.gmail.com", 587)
{
EnableSsl = true,
UseDefaultCredentials = false,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("abc@gmail.com", "pass") // abc@gmail.com = input sender email address
//pass = sender email password
};
try
{
mailSender.Send(mailMessage);
return true;
}
catch (SmtpFailedRecipientException ex)
{
// Write the exception to a Log file.
}
catch (SmtpException ex)
{
// Write the exception to a Log file.
}
finally
{
mailSender = null;
mailMessage.Dispose();
}
return false;
}
Benim için sorun parolamın içinde sorunlara yol açacağını fark etmeden kopyaladığım bir "" eğik çizgi "olmasıydı .
Başka bir yanıttan kopyalandığında , yukarıdaki yöntemler işe yarar ancak gmail her zaman "gönderen" ve "yanıtla" e-postasını gerçek gönderen gmail hesabıyla değiştirir. görünüşe göre etrafında bir çalışma var:
http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html
"3. Hesaplar Sekmesinde" Sahip olduğunuz başka bir e-posta adresini ekleyin "bağlantısını tıklayın ve ardından doğrulayın" bağlantısını tıklayın.
Veya muhtemelen bu
Güncelleme 3: Okuyucu Derek Bennett, "Çözüm, Gmail ayarlarınıza gitmek: Hesaplar ve" Varsayılan yap "ı gmail hesabınızdan başka bir hesaptır. Bu, gmail'in Kimden alanını varsayılan hesabın e-postasıyla yeniden yazmasına neden olur adres. "
Deneyebilirsiniz Mailkit
. Size posta göndermek için daha iyi ve gelişmiş işlevsellik sağlar. Sen daha bulabilirsiniz bu İşte bir örnek
MimeMessage message = new MimeMessage();
message.From.Add(new MailboxAddress("FromName", "YOU_FROM_ADDRESS@gmail.com"));
message.To.Add(new MailboxAddress("ToName", "YOU_TO_ADDRESS@gmail.com"));
message.Subject = "MyEmailSubject";
message.Body = new TextPart("plain")
{
Text = @"MyEmailBodyOnlyTextPart"
};
using (var client = new SmtpClient())
{
client.Connect("SERVER", 25); // 25 is port you can change accordingly
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// Note: only needed if the SMTP server requires authentication
client.Authenticate("YOUR_USER_NAME", "YOUR_PASSWORD");
client.Send(message);
client.Disconnect(true);
}