Tengo detalles definidos en el archivo .env . A continuación se muestra mi código.
import { Module } from '@nestjs/common'; import { MailService } from './mail.service'; import { MailController } from './mail.controller'; import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter} from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; import { join } from 'path'; @Module({ imports:[ MailerModule.forRoot({ transport:{ host: process.env.SMTP_HOST, port: 1025, ignoreTLS: true, secure: false, auth:{ user:'shruti.sharma@infosys.com', pass:'Ddixit90@@', }, }, defaults:{ from: '"No Reply" <no-reply@localhost>', }, template:{ dir:join(__dirname,'templates'), adapter: new HandlebarsAdapter(), options:{ strict:false, }, } } ) ], controllers: [MailController], providers: [MailService], exports:[MailService] }) export class MailModule {} host: process.env.SMTP_HOST funciona correctamente. pero cuando escribo process.env.SMTP_PORT , dice que no puede asignar una cadena a un número. 
cuando escribí parseInt(process.env.SMTP_PORT) todavía no funciona. cómo asignar port desde un archivo .env
port: +process.env.SMTP_PORT debería funcionar convirtiéndolo en un número. Si hay algo diferente, tal vez comparta el error que está recibiendo.
Una alternativa sería usar el servicio de configuración para MailerModule y usar la fábrica. Aquí hay un ejemplo de implementación de eso:
MailerModule.forRootAsync({ useFactory: async (config: ConfigService) => ({ transport: { host: process.env.SMTP_HOST, port: 1025, ignoreTLS: true, secure: false, auth: { user: "shruti.sharma@infosys.com", pass: "Ddixit90@@", }, }, defaults: { from: '"No Reply" <no-reply@localhost>', }, template: { dir: join(__dirname, "templates"), adapter: new HandlebarsAdapter(), options: { strict: false, }, }, }), inject: [ConfigService], }), Al hacerlo de esta manera, config.get puede determinar el tipo por la propiedad. De lo contrario, puede definirlo con config.get<number>