我需要向我的所有訂閱者發送電子郵件。我目前正在提供一個SQL Server 2008數據庫的共享託管計劃。從SQL Server 2008數據庫中取出電子郵件
我真的不希望將所有郵件複製到我的郵件客戶端(雷鳥)我也不想讓一個程序,將抓住從數據庫中的所有的電子郵件,並通過smtp.net發送
我正在尋找一個免費的解決方案,我可以告訴它的數據庫路徑和電子郵件列,並將允許我寫一個主題和身體,讓我發送它。
我需要向我的所有訂閱者發送電子郵件。我目前正在提供一個SQL Server 2008數據庫的共享託管計劃。從SQL Server 2008數據庫中取出電子郵件
我真的不希望將所有郵件複製到我的郵件客戶端(雷鳥)我也不想讓一個程序,將抓住從數據庫中的所有的電子郵件,並通過smtp.net發送
我正在尋找一個免費的解決方案,我可以告訴它的數據庫路徑和電子郵件列,並將允許我寫一個主題和身體,讓我發送它。
配置數據庫郵件的個人資料具有匹配您希望收件人查看的發件人/回覆信息。你可以看到一個教程在這裏:http://www.mssqltips.com/sqlservertip/1100/setting-up-database-mail-for-sql-2005/
根據您是否要發送相同的消息給大家,或者個性化的每一個,你可以使用一個循環來完成構建起來的地址塊到BCC(你不會必須一次發送給全部收件人)或爲每個收件人制作個性化身體/主題。
一旦在循環的每次迭代中都有正文和收件人,則可以使用msdb.dbo.sp_send_dbmail發送每條消息。
編輯添加一些示例代碼。
設置:
USE tempdb;
GO
CREATE TABLE dbo.Emails(Email VARCHAR(320));
INSERT dbo.Emails VALUES('[email protected]'),('[email protected]'),('[email protected]');
如果你只想把所有相同的消息,並假設列表很短 - 分批或分塊將是一個不同的問題:
DECLARE @bcc VARCHAR(MAX) = '';
SELECT @bcc += ';' + Email FROM dbo.Emails;
SET @bcc = STUFF(@bcc,1,1,'');
SELECT @bcc;
/*
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile name',
@recipients = 'your address',
@blind_copy_recipients = @bcc,
@body = N'body',
@subject = N'subject';
*/
- 如果你想要發送單個消息給每個收件人,請使用光標:
DECLARE @e VARCHAR(320);
DECLARE e CURSOR LOCAL STATIC FORWARD_ONLY READ_ONLY
FOR SELECT Email FROM dbo.Emails;
OPEN e;
FETCH NEXT FROM e INTO @e;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Sending to ' + @e;
/*
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile name',
@recipients = @e,
@body = N'body',
@subject = N'subject';
*/
FETCH NEXT FROM e INTO @e;
END
CLOSE e;
DEALLOCATE e;
清理:
DROP TABLE dbo.Emails;
最後,如果你的收件人列表是大,我會建議你尋求的具備更好批量郵寄其他的替代品。
ASP.net有一個SMTP client class。我確信你可以從你的表中的所有電子郵件地址select
中循環,在每個地址上調用SMTP Send()
方法。