首先我创建了一个类,它只包含一些公共属性,作为数据容器。

用Asp.net高效地发送Html格式的Email(二)public class UserCredentialsCS 

用Asp.net高效地发送Html格式的Email(二)    
public UserCredentialsCS()
{
用Asp.net高效地发送Html格式的Email(二)        
//constructor here
用Asp.net高效地发送Html格式的Email(二)
    }
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
private string _Username; 
用Asp.net高效地发送Html格式的Email(二)    
private string _Password; 
用Asp.net高效地发送Html格式的Email(二)    
private int _ExistingCredentials; 
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public string Username 

用Asp.net高效地发送Html格式的Email(二)        
get 

用Asp.net高效地发送Html格式的Email(二)            
return _Username; 
用Asp.net高效地发送Html格式的Email(二)        }
 
用Asp.net高效地发送Html格式的Email(二)        
set 

用Asp.net高效地发送Html格式的Email(二)            _Username 
= value; 
用Asp.net高效地发送Html格式的Email(二)        }
 
用Asp.net高效地发送Html格式的Email(二)    }
 
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public string Password 

用Asp.net高效地发送Html格式的Email(二)        
get 

用Asp.net高效地发送Html格式的Email(二)            
return _Password; 
用Asp.net高效地发送Html格式的Email(二)        }
 
用Asp.net高效地发送Html格式的Email(二)        
set 

用Asp.net高效地发送Html格式的Email(二)            _Password 
= value; 
用Asp.net高效地发送Html格式的Email(二)        }

用Asp.net高效地发送Html格式的Email(二)    }
 
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public int ExistingCredentials 

用Asp.net高效地发送Html格式的Email(二)        
get 

用Asp.net高效地发送Html格式的Email(二)            
return _ExistingCredentials; 
用Asp.net高效地发送Html格式的Email(二)        }
 
用Asp.net高效地发送Html格式的Email(二)        
set 

用Asp.net高效地发送Html格式的Email(二)            _ExistingCredentials 
= value; 
用Asp.net高效地发送Html格式的Email(二)        }
 
用Asp.net高效地发送Html格式的Email(二)    }
 
用Asp.net高效地发送Html格式的Email(二)}

用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)

接下来是EmaiDataCs ,它将提供一个GetUserCredentials方法,该方法包含在前文中提到的存储过程需要的参数,

用Asp.net高效地发送Html格式的Email(二)public class EmailDataCS
{
用Asp.net高效地发送Html格式的Email(二)    
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public EmailDataCS()
{
用Asp.net高效地发送Html格式的Email(二)        
//constructor logic here
用Asp.net高效地发送Html格式的Email(二)
    }
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public UserCredentialsCS GetUserCredentials(string emailAddress) 

用Asp.net高效地发送Html格式的Email(二)        SqlConnection Connection 
= new 
用Asp.net高效地发送Html格式的Email(二)        SqlConnection(ConfigurationSettings.AppSettings[
"Conn"]); 
用Asp.net高效地发送Html格式的Email(二)        SqlCommand Command 
= new SqlCommand("GetLostCredentials", Connection); 
用Asp.net高效地发送Html格式的Email(二)        Command.CommandType 
= CommandType.StoredProcedure; 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        SqlParameter ParameterEmailAddress 
= new SqlParameter("@EmailAddress"
用Asp.net高效地发送Html格式的Email(二)        SqlDbType.NVarChar, 
50); 
用Asp.net高效地发送Html格式的Email(二)        Command.Parameters.Add(ParameterEmailAddress); 
用Asp.net高效地发送Html格式的Email(二)        ParameterEmailAddress.Direction 
= ParameterDirection.Input; 
用Asp.net高效地发送Html格式的Email(二)        ParameterEmailAddress.Value 
= emailAddress; 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        SqlParameter ParameterUsername 
= new SqlParameter("@Username"
用Asp.net高效地发送Html格式的Email(二)        SqlDbType.NVarChar, 
50); 
用Asp.net高效地发送Html格式的Email(二)        Command.Parameters.Add(ParameterUsername); 
用Asp.net高效地发送Html格式的Email(二)        ParameterUsername.Direction 
= ParameterDirection.Output; 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        SqlParameter ParameterPassword 
= new SqlParameter("@Password"
用Asp.net高效地发送Html格式的Email(二)        SqlDbType.NVarChar, 
50); 
用Asp.net高效地发送Html格式的Email(二)        Command.Parameters.Add(ParameterPassword); 
用Asp.net高效地发送Html格式的Email(二)        ParameterPassword.Direction 
= ParameterDirection.Output; 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        SqlParameter ParameterExistingCredentials 
= new 
用Asp.net高效地发送Html格式的Email(二)        SqlParameter(
"@ExistingCredentials", SqlDbType.Int, 4); 
用Asp.net高效地发送Html格式的Email(二)        Command.Parameters.Add(ParameterExistingCredentials); 
用Asp.net高效地发送Html格式的Email(二)        ParameterExistingCredentials.Direction 
= ParameterDirection.Output; 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        Connection.Open(); 
用Asp.net高效地发送Html格式的Email(二)        Command.ExecuteNonQuery(); 
用Asp.net高效地发送Html格式的Email(二)        Connection.Close(); 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        UserCredentialsCS Credentials 
= new UserCredentialsCS(); 
用Asp.net高效地发送Html格式的Email(二)        Credentials.Username 
= Convert.ToString(ParameterUsername.Value); 
用Asp.net高效地发送Html格式的Email(二)        Credentials.Password 
= Convert.ToString(ParameterPassword.Value); 
用Asp.net高效地发送Html格式的Email(二)        Credentials.ExistingCredentials 
= 
用Asp.net高效地发送Html格式的Email(二)        Convert.ToInt32(ParameterExistingCredentials.Value); 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        
return Credentials; 
用Asp.net高效地发送Html格式的Email(二)    }

用Asp.net高效地发送Html格式的Email(二)}

用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)

EmailDataCs创建了SqlConnection和SqlCommand对象,然后定义Comand对象的CommandType(存储过程),我加了存储过程需要的参数,并指定了他们各自的ParameterDirection(input或者output)。存储过程GetLostCredential被执行,数据库连接被关闭,实例化一个UserCredentialCs类,公共属性通过SqlParameter被赋值,这些参数我在EmailDataCs类的GetUserCredentials方法中定义。这样,我的UserCredentialCs类(译注:应该是对象)存放了从存储过程中获取的数据。

创建一个具有输入框的aspx页面获取失去的密码

实际上,创建一个获取密码的“接口”是非常容易的。创建一个名为SimpleHtmlEmail.aspx的页面,该页面提供一个text输入框和一个butotn,以便获取一个Email地址并发送到服务器端。下面的截图显示了它的样子。

用Asp.net高效地发送Html格式的Email(二)

注意,我将在讨论各种不同的处理发送Html格式邮件方法的时候,多次利用这个页面。

通过StringBuilder类发送html格式的邮件

现在是真正用SimpleHtmlEmail.aspx页面发送html格式的邮件的时候了,把上面提到的东西真正利用起来。为了给你一个我正在讨论的问题的印象---下图显示了,如果你在aspx页面提供一个Email地址(它是有效的),将发送给你的html格式的邮件的样子。

用Asp.net高效地发送Html格式的Email(二)

创建一个名为SimpleHtmlEmail.aspx(译注:这个页面就是上文提到的页面)。为了在后台代码文件SimpleHtmlEmail.aspx.cs防止代码的混乱,并保持代码的隔离和清洁,我创建了一个新的名为SimpleHtmlEmailCs的文件.起初,这看起来没有必要,但当你看到包含html代码的最终代码的时候,你就会知道这是个不错的主意。

SimpleHtmlEmailCs的作用是发送html格式的E_mail,下面是代码片断。

用Asp.net高效地发送Html格式的Email(二)public class SimpleHtmlEmailCS
{
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public SimpleHtmlEmailCS()
{
用Asp.net高效地发送Html格式的Email(二)        
//constructor
用Asp.net高效地发送Html格式的Email(二)
    }
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)    
public void SendSimpleHtmlEmail(string EmailAddress) 

用Asp.net高效地发送Html格式的Email(二)        HtmlEmailCS.EmailDataCS Credentials 
= new HtmlEmailCS.EmailDataCS(); 
用Asp.net高效地发送Html格式的Email(二)        HtmlEmailCS.UserCredentialsCS UserData 
=     
用Asp.net高效地发送Html格式的Email(二)                Credentials.GetUserCredentials(EmailAddress); 
用Asp.net高效地发送Html格式的Email(二)            
用Asp.net高效地发送Html格式的Email(二)        
if (UserData.ExistingCredentials > 0

用Asp.net高效地发送Html格式的Email(二)            MailMessage MessageMail 
= new MailMessage(); 
用Asp.net高效地发送Html格式的Email(二)            MessageMail.From 
= "info@domain.com"
用Asp.net高效地发送Html格式的Email(二)            MessageMail.To 
= EmailAddress; 
用Asp.net高效地发送Html格式的Email(二)            MessageMail.Subject 
= "Your credentials"
用Asp.net高效地发送Html格式的Email(二)            MessageMail.BodyFormat 
= MailFormat.Html; 
用Asp.net高效地发送Html格式的Email(二)            StringBuilder MailBody 
= new StringBuilder();
用Asp.net高效地发送Html格式的Email(二) 
用Asp.net高效地发送Html格式的Email(二)            MailBody.Append(
"<html><head></head><body> \n"); 
用Asp.net高效地发送Html格式的Email(二)            MailBody.Append(
"<span style=\"font-size: 11 px; font-family:Verdana,
用Asp.net高效地发送Html格式的Email(二)                Helvetica, sans
-serif\">" + "Dear," + "<br><br>" + "Your account 
用Asp.net高效地发送Html格式的Email(二)
                information as it has been retrieved from the database:" + 
用Asp.net高效地发送Html格式的Email(二)
                "</span><br><br> \n"); 
用Asp.net高效地发送Html格式的Email(二)            MailBody.Append(
"<div style=\"font-size: 11 px; font-family:Verdana, 
用Asp.net高效地发送Html格式的Email(二)                Helvetica, sans
-serif\">" + "Username: " + UserData.Username + 
用Asp.net高效地发送Html格式的Email(二)                
"<br><br>" + "Password: " + UserData.Password + "</div> \n"); 
用Asp.net高效地发送Html格式的Email(二)            MailBody.Append(
"</body></html>"); 
用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)            MessageMail.Body 
= MailBody.ToString(); 
用Asp.net高效地发送Html格式的Email(二)            SmtpMail.SmtpServer 
= "mail-out.server.com"
用Asp.net高效地发送Html格式的Email(二)            SmtpMail.Send(MessageMail); 
用Asp.net高效地发送Html格式的Email(二)        }
 
用Asp.net高效地发送Html格式的Email(二)        
else 

用Asp.net高效地发送Html格式的Email(二)            
throw new Exception("E-mail address is invalid: 
用Asp.net高效地发送Html格式的Email(二)
                please specify the correct registered e-mail 
用Asp.net高效地发送Html格式的Email(二)                address.
"); 
用Asp.net高效地发送Html格式的Email(二)
        } 
用Asp.net高效地发送Html格式的Email(二)    }

用Asp.net高效地发送Html格式的Email(二)}

用Asp.net高效地发送Html格式的Email(二)
用Asp.net高效地发送Html格式的Email(二)


SendSimpleHtmlMail有什么作用?首先我创建了一个EmailDataCs的实例,接下来我声明了一个UserCredentialCs类型的UserData数据,调用Credentials类的GetUserCredential方法,这个方法能够返回需要的数据。如果EmailDataCs的属性ExistingCredentials为1,则发送Mail.


相关文章:

  • 2021-06-13
  • 2022-12-23
  • 2022-01-30
  • 2021-12-24
  • 2021-12-05
  • 2021-06-10
  • 2021-08-02
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
相关资源
相似解决方案