public void CreateMessage(QueuedEmailMessage message)
		{
			_sqlObjectFactory.GetConnection().Using(connection =>
				connection.Command("INSERT INTO pf_QueuedEmailMessage (FromEmail, FromName, ToEmail, ToName, Subject, Body, HtmlBody, QueueTime) VALUES (@FromEmail, @FromName, @ToEmail, @ToName, @Subject, @Body, @HtmlBody, @QueueTime)")
					.AddParameter("@FromEmail", message.FromEmail)
					.AddParameter("@FromName", message.FromName)
					.AddParameter("@ToEmail", message.ToEmail)
					.AddParameter("@ToName", message.ToName)
					.AddParameter("@Subject", message.Subject)
					.AddParameter("@Body", message.Body)
					.AddParameter("@HtmlBody", message.HtmlBody.GetObjectOrDbNull())
					.AddParameter("@QueueTime", message.QueueTime)
					.ExecuteNonQuery());
		}
		public void ComposeAndQueue(Topic topic, User user, string topicLink, string unsubscribeLink)
		{
			var settings = _settingsManager.Current;
			var body = String.Format(Resources.SubscribedEmailBody, settings.ForumTitle, topic.Title, topicLink, unsubscribeLink, settings.MailSignature, Environment.NewLine);
			var message = new QueuedEmailMessage
			              	{
			              		Body = body, 
								Subject =String.Format(Resources.SubscribedEmailSubject, topic.Title), 
								ToEmail = user.Email, 
								ToName = user.Name, 
								FromEmail = settings.MailerAddress, 
								FromName = settings.ForumTitle, 
								QueueTime = DateTime.UtcNow
			              	};
			_queuedQueuedEmailRepo.CreateMessage(message);
		}
		public void ComposeAndQueue(User user, string subject, string body, string htmlBody, string unsubscribeLink)
		{
			var settings = _settingsManager.Current;
			var ps = String.Format("{1}{1}Unsubscribe: {0}", unsubscribeLink, Environment.NewLine);
			var message = new QueuedEmailMessage
			{
				Body = body + ps,
				Subject = subject,
				ToEmail = user.Email,
				ToName = user.Name,
				FromEmail = settings.MailerAddress,
				FromName = settings.ForumTitle,
				QueueTime = DateTime.UtcNow
			};
			if (!String.IsNullOrWhiteSpace(htmlBody))
				message.HtmlBody = String.Format("{0}<p>Unsubscribe: <a href=\"{1}\">{1}</a></p>", htmlBody, unsubscribeLink);
			_queuedQueuedEmailRepo.CreateMessage(message);
		}
Esempio n. 4
0
		public SmtpStatusCode Send(QueuedEmailMessage message)
		{
			if (message == null)
				throw new ArgumentNullException("message");
			var from = new MailAddress(message.FromEmail, message.FromName);
			var to = new MailAddress(message.ToEmail, message.ToName);
			var mailMessage = new MailMessage(from, to)
			                  	{
			                  		Subject = message.Subject,
			                  		Body = message.Body
								};
			if (!String.IsNullOrWhiteSpace(message.HtmlBody))
			{
				var altView = AlternateView.CreateAlternateViewFromString(message.HtmlBody, Encoding.UTF8, "text/html");
				altView.TransferEncoding = TransferEncoding.SevenBit;
				mailMessage.AlternateViews.Add(altView);
			}
			mailMessage.Headers.Add("X-MessageID", message.MessageID.ToString());
			return Send(mailMessage);
		}
		public QueuedEmailMessage GetOldestQueuedEmailMessage()
		{
			QueuedEmailMessage message = null;
			_sqlObjectFactory.GetConnection().Using(connection =>
				connection.Command("SELECT TOP 1 MessageID, FromEmail, FromName, ToEmail, ToName, Subject, Body, HtmlBody, QueueTime FROM pf_QueuedEmailMessage ORDER BY QueueTime")
					.ExecuteReader()
					.ReadOne(r => message = new QueuedEmailMessage
												{
													MessageID = r.GetInt32(0),
													FromEmail = r.GetString(1),
													FromName = r.GetString(2),
													ToEmail = r.GetString(3),
													ToName = r.GetString(4),
													Subject = r.GetString(5),
													Body = r.GetString(6),
													HtmlBody = r.NullStringDbHelper(7),
													QueueTime = r.GetDateTime(8)
												}));
			return message;
		}
		public void ComposeAndQueue(User user, string resetLink)
		{
			if (user == null)
				throw new ArgumentNullException("user");
			if (String.IsNullOrEmpty(resetLink))
				throw new ArgumentException("resetLink");
			var settings = _settingsManager.Current;
			var body = String.Format(Resources.ForgotPasswordEmail
				, settings.ForumTitle, resetLink, settings.MailSignature, Environment.NewLine);
			var message = new QueuedEmailMessage
			{
				Body = body,
				Subject = String.Format(Resources.ForgotPasswordSubject, settings.ForumTitle),
				ToEmail = user.Email,
				ToName = user.Name,
				FromEmail = settings.MailerAddress,
				FromName = settings.ForumTitle,
				QueueTime = DateTime.UtcNow
			};
			_queuedQueuedEmailRepo.CreateMessage(message);
		}