Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C# (http://www.go4expert.com/forums/c-sharp/)
-   -   [Need Help] Sending email with c# (http://www.go4expert.com/forums/help-sending-email-c-sharp-t14466/)

vecinity 10Oct2008 03:15

[Need Help] Sending email with c#
 
Well, I recently wrote a c# app sending email by connecting to known SMTP servers using System.Net.Mail, and sending mail from your account without having to connect to the site.
The problem is I can send mail only from Gmail accounts. both yahoo, hotmail and another less know host Walla(from my country), fail to send emails and pop-up different errors.

- when i try to connect to yahoo through my account i get this error:
The SMTP server requires a secure connection or the client was not authenticated. The server response was: authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html

- when i try to connect to walla through my account there i get this error:
Mailbox unavailable. The server response was: 5.7.1 <targetmail@gmail.com>... Relaying denied. Please check your mail first or restart your mail session.

I tried to set the next property:
_client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
_client.PickupDirectoryLocation = @"c:\temp";
(_client is my SmtpClient)
and tried to set the default Pickup directory to different paths manually. after setting it up, the program acts as if it has sent the massage successfully but it never gets to the 'SendCompleted' event and the email never gets to it's destination.

I really need help guyz, if anyone can tell me y won't it work, i will b very grateful.

thanks.

Now for the code:

This is my transportLayer class, handling all SmtpClient methods.
Code: csharp

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace Mailer
{
    public class TransportLayer
    {
        #region Members

        private SmtpClient _client;
        public event EventHandler<MessageSentEventArgs> MessageSent;

        #endregion

        #region Ctors

        public TransportLayer(string host, Boolean useSecureConnection)
        {
            _client = new SmtpClient(host);
            _client.SendCompleted += new SendCompletedEventHandler(_client_SendCompleted);
            _client.EnableSsl = false;
        }
        #endregion

        #region Methods

        public void SetCredentials(string username, string password)
        {
            _client.UseDefaultCredentials = false;
            _client.Credentials = new NetworkCredential(username, password, _client.Host);
            _client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
            _client.PickupDirectoryLocation = @"c:\temp";
        }

        public void SendMessage(string from, string to, string subject, string body)
        {
            MailMessage message;
            message = new MailMessage(from, to, subject, body);
            _client.Send(message);
        }

        #endregion

        #region Events

        void _client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            if (MessageSent != null)
            {
                MessageSent(this, new MessageSentEventArgs());
            }
        }
        #endregion
    }
}



All times are GMT +5.5. The time now is 09:53.