Can an ASP.NET Web.Config file have a dynamic value? - asp.net

Not really sure if i'm asking this correctly or not, but can a web.config file have a data driven value.? For example, in my mailSettings section, i have this
<system.net>
<mailSettings>
<smtp deliveryMethod="network" xdt:Transform="Replace">
<network host="11.222.33.4" userName="MyUsername" />
</smtp>
</mailSettings>
</system.net>
i would like the host="11.222.33.44" to come from a database.. Is this possible.?

You can read the SMTP configuration from web.config file. I don't think there can be a dynamic variable in web.config file
SmtpClient client = new SmtpClient();
string host = smtp.Host; // you will get the host value here. Then update the host value here with the database host value

You could ignore web.config altogether and create an smtp client on the fly. Get your value from a database however you like then
System.Net.Mail.SmtpClient c = new System.Net.Mail.SmtpClient(< host name or ip address >);
c.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

Related

<MailSettings> Use deliveryMethods 'Network' and 'SpecifiedPickupDirectory' simultaneously

Exactly as it says on the tin: is it possible to specify both delivery methods in a single configuration? I'd figure it'd be a quick (and cheap) solution to log all e-mail messages that were sent directly by the standard .NET SmtpClient.
What I'm trying to achieve here is a solution in which every e-mail sent by an defaultly SmtpClient instance is both submitted directly to a configured SMTP server and stored in a pickup directory, which merely will act as a storage point for logging the sent e-mail messages.
In other words: Is a configuration as follows possible?
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="source#domain.com">
<network host="127.0.0.1" />
</smtp>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="C:\SmtpLog" />
</smtp>
</mailSettings>
</system.net>
Don't believe this is possible in the manner you suggest - see Scott Gutherie's response on http://weblogs.asp.net/scottgu/archive/2005/12/10/432854.aspx (search page for "multiple SMTP servers"). Old message but still current from what I can tell.
I think the system.net mailSettings in web.config are supposed to be considered the default settings.
However you can do it in code easily enough (plenty of examples out there) and you could do it so that you can configure in web.config using custom settings.

Can I set ntlm authentication for a mail server via the web.config file?

Is it possible to specify that you want to use NTLM authentication for SMTP using system.net, all via the web.config file? If so, what needs to be done?
I've been told adding the following will cause NTLM or Kerberos to be used if the SMTP server requires it, but our SMTP server is not authenticating. (I'm no SMTP expert).
<configuration>
<system.net>
<mailSettings>
<smtp>
<network host="yourhost.com" userName="user#yourhost.com" password="yourpassword" port="yourport" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>
E.g. Should there be authentication modules specified?
You may have a look at this blog

Is it possible to send an email via google apps without an ssl cert?

I'm trying to send email via google apps from my asp.net app and am getting the following exception:
{"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at "}
My Web.config has the following values (sorry I couldn't get the XML to display):
<system.net>
<mailSettings>
<smtp from="user#domain.com"
deliveryMethod="Network">
<network host="smtp.gmail.com"
port="587"
userName="user#domain.com"
password="password"
enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
I'm thinking that this is due to my not having an SSL cert but I'm not sure. Any thoughts?
I have it working this way with one of our gmail account (code is simplified):
SmtpClient client = new SmtpClient("smtp.gmail.com", "smtp.gmail.com");
client.EnableSsl = true;
client.Credentials = new NetworkCredential(userName, userPassword);
client.Send(mail); // mail is of type System.Net.Mail.MailMessage
You could try to send an email with this code and your configuration just to see if you receive the same error message.
Your code should work fine; I use the exact same configuration successfully.
You may have a firewall issue.

I need to send an Email notification in my exception message using asp.net MVC

I need to send and Email when Any Message occurs I am trying to logg the errors once I logged it I need to send the Email to them..
Thanks
A compbination of ELMAH and System.Net.Mail...
ELMAH:
http://code.google.com/p/elmah/
System.Net.Mail Namespace:
http://msdn.microsoft.com/en-us/library/system.net.mail.aspx
In Code:
using System.Net.Mail;
// ...
SmtpClient mailClient = new SmtpClient();
mailClient.Send(from, to, subject, body);
In Web.Config:
<system.net>
<mailSettings>
<smtp from=your_email#gmail.com>
<network host="smtp.gmail.com"
password="your_pwd"
port="587"
userName="your_username#gmail.com"/>
</smtp>
</mailSettings>
</system.net>
You can use log4net as your infrastructure of logging and in the config add an email appender (EventLogAppender).

How do you configure Password Recovery control in ASP.Net?

I have a password recovery control that is set up to ask the user their security question. I have configured the from email and subject, but I am receiving a runtime error stating SMTP host is not specified.
Can someone tell me where I need to set the host?
Thanks
Add a system.net section to your web.config with the following:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="yourmailserveraddress"/>
</smtp>
</mailSettings>
</system.net>

Resources