Problem with a Mail Rule


(Alberto González Ramírez) #1

Hi everybody.
Back again.
I´m having heavy problems to debug this mail rule.
Everything seems to be ok until the script reaches the handler “mandarElCorreoDeBienvenida” when the process freezes.
I have read problems to debug with Sierra in this forum.
Any help?
Thanks for your time.

This is the rule:

using terms from application "Mail"
	on perform mail action with messages correosSuscriptores for rule regla
		
		set punto to 0
		try
			repeat with ref_correoSuscriptor from 1 to length of correosSuscriptores
				set correo to (contents of ref_correoSuscriptor)
				set {asunto, contenido} to {subject, content} of correo
				--display dialog contenido
				set punto to 1
				set nombreSuscriptor to obtenerNombreSuscriptor(contenido)
				set punto to 2
				set emailSuscriptor to obtenerEmailSuscriptor(asunto)
				set punto to 3
				--creamos un contacto con los datos del nuevo suscriptor 
				crearNuevoContactoEnElGrupoSuscriptores(nombreSuscriptor, emailSuscriptor)
				set punto to 4
				--una vez almacenado el contacto, procedemos a mandarle el correo de bienvenida
				mandarElCorreoDeBienvenida(nombreSuscriptor, emailSuscriptor)
				set punto to 5
				--una vez mandado el correo, vamos a crear una nota en la aplicación "Notas" indicando que se ha procesado correctamente el script
				crearNota(nombreSuscriptor, emailSuscriptor)
			end repeat
		on error
			display notification "se ha producido un errror en el punto " & punto
		end try
		
	end perform mail action with messages
end using terms from

And the handlers:

on obtenerNombreSuscriptor(contenidoEmail)
	return (word 2 of paragraph 2 of contenidoEmail)
end obtenerNombreSuscriptor

on obtenerEmailSuscriptor(asunto)
	return (word 6 of asunto & "@" & word 7 of asunto)
end obtenerEmailSuscriptor

on crearNuevoContactoEnElGrupoSuscriptores(nombre, correoElectronico)
	tell application "Contacts"
		tell group "suscriptores blog"
			set nuevoSuscriptor to make new person with properties {first name:nombre}
			tell nuevoSuscriptor
				make new email with properties {label:"home", value:correoElectronico}
			end tell
		end tell
		--ahora colocamos el comando "save" para que el nuevo contacto sea persistente en la aplicación contactos
		--si no lo ponemos, no se creará el contacto
		save
	end tell
end crearNuevoContactoEnElGrupoSuscriptores

on mandarElCorreoDeBienvenida(nombreDestinatario, correoElectronicoDestinatario)
	
	set asunto to "Bienvenido a la comunidad de Automatizando Manzanas"
	set remitente to "automatizandomanzana@icloud.com"
	set contenidoDelMensaje to "¡Hola " & nombreDestinatario & "!"
	set contenidoDelMensaje to contenidoDelMensaje & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "Hemos recibido, a través del formulario de suscripción de la web, tu solicitud de suscripción."
	set contenidoDelMensaje to contenidoDelMensaje & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "Únicamente recibirás un correo semanal con las novedades de la web y del canal de YouTube. Además, tendrás preferencias y descuentos en los cursos que estamos preparando."
	set contenidoDelMensaje to contenidoDelMensaje & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "Si quieres que hablemos de temas de tu interés, como suscriptor tendrás un baremo más alto (por antigüedad suscripción y actividad) para que preparemos contenido de tu gusto. Dínoslo."
	set contenidoDelMensaje to contenidoDelMensaje & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "Te pedimos disculpas si la edición de vídeo o sonido no es óptima, o si la web presenta defectos. Estamos trabajando para mejorar el contenido que producimos."
	set contenidoDelMensaje to contenidoDelMensaje & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "Si nos quieres comentar algo, o realizar la solicitud que consideres oportuna, te animamos a hacerlo. Nos guste, o no, lo que pongas."
	set contenidoDelMensaje to contenidoDelMensaje & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "Sin más, te reiteramos nuestro agradecimiento por tu confianza."
	set contenidoDelMensaje to contenidoDelMensaje & return & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "http://automatizandomanzanas.com"
	set contenidoDelMensaje to contenidoDelMensaje & return
	set contenidoDelMensaje to contenidoDelMensaje & "Tu blog sobre automatización en dispositivos Apple"
	set contenidoDelMensaje to contenidoDelMensaje & return & return & return
	set contenidoDelMensaje to contenidoDelMensaje & "PD: Si en cualquier momento te quieres 
desuscribir, mándanos un correo a través del formulario de contacto de la web, y te quitaremos del listado de suscriptores."
	
	tell application "Mail"
		launch
		set correoBienvenida to make new outgoing message with properties {sender:remitente, subject:asunto, content:contenidoDelMensaje}
		tell correoBienvenida
			make new to recipient with properties {name:nombreDestinatario, address:correoElectronicoDestinatario}
		end tell
		delay 0.3
		send correoBienvenida
	end tell
	
end mandarElCorreoDeBienvenida

on crearNota(nombreSuscriptor, correoElectronico)
	set tituloDeLaNota to "Script OK: mandarCorreoBienvenidaAsuscriptor"
	set cuerpoDeLaNota to "Se ha mandado ok el correo de bienvenida a: " & nombreSuscriptor & " , con email: " & correoElectronico
	tell application "Notes"
		tell folder "scripts"
			make new note with properties {name:tituloDeLaNota, body:cuerpoDeLaNota}
		end tell
	end tell
end crearNota

(Alberto González Ramírez) #2

The more I try to find the bug, the different results I get.
Sometimes the error clause says the error is between “set punto to 0” and “set punto to 1”.