Artigo: 910360 - Última revisão: sexta-feira, 16 de Março de 2007 - Revisão: 1.1

Como resolver a mensagem de erro "Não foi possível criar 'CDO.Message'"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
importante Este artigo contém informações sobre como modificar o registo. Certifique-se de que cópia de segurança do registo antes de o modificar. Certifique-se que sabe como restaurar o registo se ocorrer um problema. Para obter mais informações sobre como efectuar uma cópia de segurança, restaurar e modificar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
256986  (http://support.microsoft.com/kb/256986/ ) Descrição do registo do Microsoft Windows

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo descreve como resolver a mensagem de erro "Não foi possível criar 'CDO.Message'". Poderá receber esta mensagem quando utiliza uma aplicação para enviar mensagens de correio electrónico.

Mais Informação

A mensagem de erro é provocada por um problema no Microsoft Collaboration Data Objects (CDO, Collaboration Data OBJECTS). Este problema ocorre se um ou mais das seguintes condições se verificar:
  • O ficheiro Cdosys.dll não está correctamente registado.
  • A conta de utilizador não tem permissões suficientes para aceder a chave de registo para o CDO para a biblioteca do Microsoft Windows 2000 (CDOSYS.dll).
  • Está a ser utilizado um servidor virtual de protocolo simples de transferência de correio (SMTP) inválido ou a propriedade SmtpMail.SmtpServer está configurada incorrectamente.
  • O utilizador não tem permissões para retransmitir mensagens de correio electrónico através do servidor virtual de SMTP.
  • A propriedade MailMessage.From não está definida para um endereço de correio electrónico válido.
Pode utilizar um ou mais dos seguintes métodos para resolver o problema CDO. aviso Podem ocorrer problemas graves se modificar o registo incorrectamente utilizando o Editor de registo ou utilizando outro método. Estes problemas poderão forçar a reinstalação do sistema operativo. Microsoft não garante que estes problemas podem ser resolvidos. Modificar o registo por sua conta e risco.

Método 1: Certifique-se de que o ficheiro Cdosys.dll está correctamente registado

  1. Determine se o ficheiro Cdosys.dll está correctamente registado. Para o fazer, siga estes passos:
    1. Clique em Iniciar , clique em Executar , escreva regedt32 e, em seguida, clique em OK .
    2. No Editor de registo, localize e expanda a subárvore de registo HKEY_CLASSES_ROOT . Expanda TypeLib e, em seguida, localize {CD000000-8B95-11 D 1-82DB-00C04FB1625D} .
    3. Expanda {CD000000-8B95-11 D 1-82DB-00C04FB1625D} , expanda 1.0 e, em seguida, clique em 0 .
    4. Clique em win32 e, em seguida, confirmar se o seguinte valor é apresentado no painel da direita:
      Drive: \WINDOWS\system32\cdosys.dll
  2. Registe o ficheiro Cdosys.dll. Para o fazer, siga estes passos:
    1. Clique em Iniciar , clique em Executar , escreva regsvr32 %systemroot%\system32\cdosys.dll e, em seguida, clique em OK .

      Nota Poderá receber a 0x800704da código de erro se existirem várias versões do CDO no mesmo sistema operativo. Para resolver este problema, utilize o comando regsrv32 -u cdosys.dll para anular o registo do ficheiro Cdosys.dll. Em seguida, volte a registar o ficheiro Cdosys.dll executando o seguinte comando:
      regsvr32 %systemroot%\system32\cdosys.dll
      Para mais informações sobre versões do CDO, visite o seguinte Web site da Microsoft Developer Network (MSDN):
      http://msdn2.microsoft.com/en-us/library/ms978698.aspx (http://msdn2.microsoft.com/en-us/library/ms978698.aspx)

Método 2: Conceder permissões para a conta de utilizador aceder a chave de registo para CDO para o Windows 2000 biblioteca

  1. Conceder permissão para a conta de utilizador para aceder a chave de registo para CDO para o Windows 2000 Library.
  2. Clique em Iniciar , clique em Executar , escreva regedt32 e, em seguida, clique em OK .
  3. No Editor de registo, localize e expanda a chave de registo HKEY_CLASSES_ROOT . Expanda TypeLib e, em seguida, localize {CD000000-8B95-11 D 1-82DB-00C04FB1625D} .
  4. Clique com o botão direito do rato {CD000000-8B95-11 D 1-82DB-00C04FB1625D} , clique em permissões (Permissions) e, em seguida, clique em Adicionar .
  5. Tipo ComputerName \ UserName e, em seguida, clique em OK

    Nota Marcador de posição ComputerName representa o nome do computador. O marcador de posição UserName representa o nome do utilizador.
  6. Clique para seleccionar a caixa de verificação em Permitir coluna para conceder permissão de leitura para o utilizador e, em seguida, clique em OK .

Método 3: Certifique-se que a propriedade SmtpMail.SmtpServer estiver definida para um endereço IP de servidor válido

Certifique-se de que conhece o endereço IP de um servidor de correio SMTP válido na rede. Em seguida, defina o valor da propriedade SmtpMail.SmtpServer como o valor válido.

Método 4: Configurar as permissões de utilizador para retransmitir mensagens de correio electrónico através do serviço SMTP

  1. Clique em Iniciar , clique em Executar , escreva inetmgr e, em seguida, clique em OK .
  2. Expanda ComputerName e, em seguida, clique com o botão direito do rato um servidor virtual de SMTP válido.

    Nota Marcador de posição ComputerName representa o nome do computador local.
  3. Clique em Propriedades . No separador segurança , adicione a conta de utilizador como um operador.
  4. Feche todas as caixas de diálogo e, em seguida, reiniciar o SMTP service.

Método 5: Certifique-se de que a propriedade MailMessage.From estiver definida para um endereço de correio electrónico válido

Utilize um endereço de correio electrónico do remetente válido existe no servidor de SMTP. A propriedade SmtpMail.SmtpServer aponta para este servidor. Não utilize um endereço fictício diferente para o valor da propriedade MailMessage.From .

Pode configurar o ficheiro Cdosys.dll para apontar para servidores de SMTP através de programação. Esta opção permite aos programadores de flexibilidade na configuração de servidores de SMTP com base nas definições de aplicação dos servidores. Segue-se código de exemplo numa aplicação Web do Microsoft Visual C#.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Mail;

namespace WebApplication1
{
	/// <summary>
	/// Summary description for WebForm1.
	/// </summary>
	public class WebForm1 : System.Web.UI.Page
	{
		private void Page_Load(object sender, System.EventArgs e)
		{
			MailMessage mail = new MailMessage();
			mail.To = "<john@contoso.com>";
			mail.From = "<ruth@contoso.com>";
			mail.Subject = "This is a test email.";
			mail.Body = "Some text goes here";
			
   // The following line will cause an exception to be thrown.
   SmtpMail.SmtpServer = "172.16.0.0";
			try
			{
				SmtpMail.Send(mail);
			}
			catch(Exception ex )
			{
				Response.Write("The following exception occurred: "  + ex.ToString() );
				
				// Check the InnerException.
				while( ex.InnerException != null )
				{
					Response.Write("--------------------------------");
					Response.Write("The following InnerException reported: " + ex.InnerException.ToString() );
					ex = ex.InnerException;
				}
			}
		}



		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion
	}
}
Nota as marcadores de posição <john@contoso.com> e <ruth@contoso.com> representam os endereços de correio electrónico real dos utilizadores.

Referências

Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
827659  (http://support.microsoft.com/kb/827659/ ) Recebe um erro de "DllRegisterServer" quando tenta registar uma DLL utilizando a ferramenta Regsvr32.exe
327219  (http://support.microsoft.com/kb/327219/ ) Collaboration data objects para o Windows NT, para o Windows 2000 e para o Exchange 2000 requerem o Outlook Express

A informação contida neste artigo aplica-se a:
  • Microsoft Collaboration Data Objects 2.0
Palavras-chave: 
kbmt kbtshoot kbinfo KB910360 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 910360  (http://support.microsoft.com/kb/910360/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.