sql 如下: exec msdb..sp_send_dbmail @profile_name =  'dbo_profile'  -- profile 名称 
         ,@recipients   =  '[email protected]' -- 收件人邮箱 
         ,@subject      =  '邮件标题 ' -- 邮件标题 
         ,@body         =  'sssssssssssssssss' -- 邮件内容 
         ,@body_format  =  'TEXT' -- 邮件格式以前是可以的 
现在不知道是不是SQL SERVER那个设置改变了  就是不行运行语句后 提示“邮件已排队”
但是邮箱收不到此邮件麻烦给位大侠帮忙瞅瞅

解决方案 »

  1.   

    这个问题貌似网上也不少  为什么有的人就行呢 我的OUTLOOK 也是好的撒
      

  2.   

    发送不出去,先试下用OUTLOOK等发信可以不,再看看SMTP服务器设置的参数对不对。SQL2005以后的数据库邮件设置都很简单了。
      

  3.   


    1. 启用 SQL Server 2005 邮件功能。 use master
    goexec sp_configure 'show advanced options',1
    goreconfigure
    goexec sp_configure 'Database mail XPs',1
    goreconfigure
    go2. 在 SQL Server 2005 中添加邮件帐户(account) exec msdb..sysmail_add_account_sp
            @account_name            = 'p.c.w.l'                 -- 邮件帐户名称(SQL Server 使用)
           ,@email_address           = '[email protected]'  -- 发件人邮件地址
           ,@display_name            = null                      -- 发件人姓名
           ,@replyto_address         = null
           ,@description             = null
           ,@mailserver_name         = '58.215.64.159'           -- 邮件服务器地址
           ,@mailserver_type         = 'SMTP'                    -- 邮件协议(SQL 2005 只支持 SMTP)
           ,@port                    = 25                        -- 邮件服务器端口
           ,@username                = '[email protected]'  -- 用户名
           ,@password                = 'xxxxxxxxx'               -- 密码
           ,@use_default_credentials = 0
           ,@enable_ssl              = 0
           ,@account_id              = null3. 在 SQL Server 2005 中添加 profile exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile'      -- profile 名称 
                                     ,@description  = 'dba mail profile' -- profile 描述 
                                     ,@profile_id   = null4. 在 SQL Server 2005 中映射 account 和 profile exec msdb..sysmail_add_profileaccount_sp  @profile_name    = 'dba_profile' -- profile 名称 
                                             ,@account_name    = 'p.c.w.l'     -- account 名称 
                                             ,@sequence_number = 1             -- account 在 profile 中顺序 5. 利用 SQL Server 2005 Database Mail 功能发送邮件。 exec msdb..sp_send_dbmail @profile_name =  'dba_profile'               -- profile 名称 
                             ,@recipients   =  '[email protected]'          -- 收件人邮箱 
                             ,@subject      =  'SQL Server 2005 Mail Test' -- 邮件标题 
                             ,@body         =  'Hello Mail!'               -- 邮件内容 
                             ,@body_format  =  'TEXT'                      -- 邮件格式 6. 查看邮件发送情况: use msdb
    goselect * from sysmail_allitems
    select * from sysmail_mailitems
    select * from sysmail_event_log如果不是以 sa 帐户发送邮件,则可能会出现错误: Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
    EXECUTE permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'.这是因为,当前 SQL Server 登陆帐户(login),在 msdb 数据库中没有发送数据库邮件的权限,需要加入 msdb 数据库用户,并通过加入 sp_addrolemember 角色赋予权限。假设该SQL Server 登陆帐户名字为 “dba” use msdb
    gocreate user dba for login dba
    goexec dbo.sp_addrolemember @rolename   = 'DatabaseMailUserRole',
                              @membername = 'dba'
    go此时,再次发送数据库邮件,仍可能有错误: Msg 14607, Level 16, State 1, Procedure sp_send_dbmail, Line 119
    profile name is not valid虽然,数据库用户 “dba” 已经在 msdb 中拥有发送邮件的权限了,但这还不够,他还需要有使用 profile:“dba_profile” 的权限。 use msdb
    goexec sysmail_add_principalprofile_sp  @principal_name = 'dba'
                                         ,@profile_name   = 'dba_profile'
                                         ,@is_default     = 1从上面的参数 @is_default=1 可以看出,一个数据库用户可以在多个 mail profile 拥有发送权限。 
      

  4.   

    查一下
    select * from sysmail_sentitems
    看里面有没有。如果有就说明邮件已经发出去,检查是不是你的邮件服务器被列为了垃圾邮件服务器。另外sysmail_faileditems是失败的邮件,sysmail_unsentitems是还未发送的邮件。
      

  5.   

    装的是SQL Express吧
    Service Broker未启用